Function at 0x140029200
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov edx, dword [rcx + 0x1c]
xor r15d, r15d
mov eax, edx
mov rdi, rcx
and al, 4
movzx r12d, r15w
neg al
sbb r14d, r14d
neg r14d
add r14d, 0x1b
test dl, 8
je 0x140029240
movzx eax, byte [rcx + 0x38]
add r14d, eax
mov ebx, r15d
mov r13d, 1
mov dword [rbp + 0x48], ebx
test r14d, r14d
je 0x140029347
lea eax, [rbx - 0x10]
cmp eax, 7
jbe 0x140029338
mov esi, ebx
mov edx, ebx
imul esi, dword [rdi + 0x40]
mov rcx, rdi
add rsi, qword [rdi + 0x80]
mov r8, rsi
call fcn.14002b214
lea eax, [rbx - 1]
cmp eax, 0x16
ja 0x140029287
mov word [rsi + 0x10], bx
or word [rsi + 0x16], r13w
mov eax, ebx
mov rdx, qword [rdi + 0x88]
and eax, 7
mov r8d, ebx
shr r8, 3
movzx ecx, byte [r8 + rdx]
bts ecx, eax
mov byte [r8 + rdx], cl
cmp ebx, 0x1b
jb 0x1400292df
mov r8d, dword [rdi + 0x1c]
mov ecx, r8d
mov eax, r8d
and ecx, r13d
shl ecx, 0xd
mov r10d, ecx
bts r10d, 0xb
and al, 2
cmove r10d, ecx
and r8d, 0x10
or r8d, 0x1020
shr r8d, 4
jmp 0x140029321
mov r10d, 6
cmp ebx, 9
ja 0x140029ab7
je 0x140029aa6
mov eax, ebx
test ebx, ebx
je 0x14002931b
sub eax, r13d
je 0x14002931b
sub eax, r13d
je 0x14002931b
sub eax, 3
je 0x140029a74
sub eax, r13d
je 0x14002931b
cmp eax, 2
jne 0x140029ad6
mov r8d, pe_nt_image_headers64
xor r9d, r9d
mov edx, r10d
mov rcx, rsi
call fcn.140028a00
test rax, rax
je 0x14002a5c7
add ebx, r13d
mov dword [rbp + 0x48], ebx
cmp ebx, r14d
jb 0x140029255
mov r8d, dword [rdi + 0x40]
mov ecx, r8d
mov eax, dword [rdi + 0xb8]
imul ecx, r14d
cmp ecx, eax
jae 0x1400293aa
xor edx, edx
mov esi, 0x10
div r8d
mov dword [rbp + 0x48], esi
mov r15d, eax
cmp eax, esi
jbe 0x1400293a7
cmp esi, 0x18
jb 0x14002937a
cmp esi, r14d
jb 0x140029398
mov ebx, esi
mov edx, esi
imul ebx, dword [rdi + 0x40]
mov rcx, rdi
add rbx, qword [rdi + 0x80]
mov r8, rbx
call fcn.14002b214
mov word [rbx + 0x10], si
add esi, r13d
cmp esi, r15d
jb 0x140029370
mov r8d, dword [rdi + 0x40]
mov dword [rbp + 0x48], esi
xor r15d, r15d
lea esi, [r8 + r8*4]
mov byte [rsp + 0x38], 3
add rsi, qword [rdi + 0x80]
mov eax, 2
movabs r14, 0x5000000000005
xor r9d, r9d
xor r8d, r8d
mov rdx, r14
mov rcx, rsi
or word [rsi + 0x16], ax
lea rax, [0x14002ec40]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], 0x10000006
call fcn.140028434
mov r13, rax
test rax, rax
je 0x14002a5c7
mov ecx, dword [rdi + 0x1c]
test cl, 0x10
jne 0x140029458
lea rdx, [rbp + 0x48]
lea rcx, [rbp + 0x50]
call fcn.14002b78c
mov r14, qword [rbp + 0x50]
test r14, r14
je 0x14002a5c7
mov r8d, dword [rbp + 0x48]
mov r9, r14
mov rdx, rsi
mov rcx, rdi
call fcn.140028990
xor edx, edx
mov rcx, r14
mov rbx, rax
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
test rbx, rbx
je 0x14002a5c7
movabs r14, 0x5000000000005
mov eax, dword [rdi + 0x1c]
lea r9, [0x14002ec30]
mov ecx, 1
shr eax, 1
and ax, cx
mov r8b, 4
mov word [rsp + 0x30], ax
mov rdx, rsi
mov dword [rsp + 0x28], ecx
mov rcx, rdi
mov dword [rsp + 0x20], 0x30
call fcn.140028864
test rax, rax
je 0x14002a5c7
lea r15, [rdi + 0xa0]
xor ebx, ebx
mov qword [rsp + 0x28], r15
lea r9, [0x14002ec30]
mov r8b, 4
mov byte [rsp + 0x20], bl
mov rdx, rsi
mov rcx, rdi
call fcn.14002cac8
test al, al
je 0x14002a5c7
movzx r9d, word [r13 + 0x14]
mov r8, r14
mov eax, dword [r13 + 0x10]
add r9, r13
mov rdx, qword [r15]
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.14002bee0
xor r13d, r13d
test al, al
je 0x14002a5c7
mov eax, dword [rdi + 0x40]
lea rcx, [0x14002ec50]
mov rdx, qword [r15]
movabs r8, 0x2000000000002
mov byte [rsp + 0x50], 3
mov qword [rsp + 0x48], rcx
mov rcx, rdi
mov dword [rsp + 0x40], r13d
lea ebx, [rax + rax]
mov eax, dword [rdi + 0xc4]
add rbx, qword [rdi + 0x80]
mov dword [rsp + 0x38], 6
mov r9, rbx
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r14
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov rax, qword [rdi + 0xe8]
xor r8d, r8d
mov ecx, dword [rdi + 0xc4]
xor r9d, r9d
mov dword [rsp + 0x40], 0x10
mov rdx, rbx
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0x40]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov byte [rbp + 0x40], 0xff
mov qword [rsp + 0x20], r13
call fcn.1400283d8
test rax, rax
je 0x14002a5c7
mov r8d, dword [rdi + 0xc8]
mov ecx, dword [rdi + 0x3c]
mov esi, dword [rdi + 0x40]
mov byte [rsp + 0x50], 3
lea edx, [r8 - 1]
shl esi, 2
add rsi, qword [rdi + 0x80]
add edx, ecx
neg ecx
mov r9, rsi
mov eax, ecx
mov rcx, rdi
and rdx, rax
lea rax, [0x14002ec70]
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], r8
movabs r8, 0x4000000000004
mov qword [rsp + 0x28], rdx
mov rdx, qword [r15]
mov qword [rsp + 0x20], r14
call fcn.1400285b4
test al, al
je 0x14002a5c7
lea r8, [rbp + 0x48]
lea rdx, [rbp + 0x50]
lea ecx, [r13 + 4]
call fcn.14002bd94
mov r14, qword [rbp + 0x50]
test r14, r14
je 0x14002a5c7
mov r8d, dword [rbp + 0x48]
mov r9, r14
mov rdx, rsi
mov rcx, rdi
call fcn.140028990
xor edx, edx
mov rcx, r14
mov rbx, rax
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
test rbx, rbx
je 0x14002a5c7
mov ecx, dword [rdi + 0xc8]
xor r8d, r8d
mov rax, qword [rdi + 0xa8]
xor r9d, r9d
mov qword [rsp + 0x30], rax
mov rdx, rsi
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov qword [rsp + 0x20], r13
call fcn.140028344
test rax, rax
je 0x14002a5c7
mov esi, 0x2000
lea ecx, [r13 + 1]
mov edx, esi
mov r8d, 0x66746e56
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov qword [rdi + 0x98], rax
test rax, rax
je 0x14002a5c7
mov ebx, 0x1028
lea rdx, [0x14001c3a0]
mov r8d, ebx
mov rcx, rax
call fcn.140015a80
mov rcx, qword [rdi + 0x98]
lea r8d, [rbx - 0x50]
add rcx, rbx
xor edx, edx
call fcn.140015d40
mov rdx, qword [rdi + 0x98]
mov rcx, rdi
call fcn.140028d40
mov ecx, dword [rdi + 0x3c]
movabs r8, 0x7000000000007
imul r14d, dword [rdi + 0x40], 7
mov byte [rsp + 0x50], 3
lea edx, [rcx + 0x1fff]
neg ecx
mov eax, ecx
mov rcx, rdi
add r14, qword [rdi + 0x80]
and rdx, rax
lea rax, [0x14002ec90]
mov r9, r14
mov qword [rsp + 0x48], rax
movabs rax, 0x5000000000005
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rdx
mov rdx, qword [r15]
mov qword [rsp + 0x20], rax
call fcn.1400285b4
test al, al
je 0x14002a5c7
lea r8, [rbp + 0x48]
lea rdx, [rbp + 0x50]
lea ecx, [r13 + 7]
call fcn.14002bd94
mov rsi, qword [rbp + 0x50]
test rsi, rsi
je 0x14002a5c7
mov r8d, dword [rbp + 0x48]
mov r9, rsi
mov rdx, r14
mov rcx, rdi
call fcn.140028990
xor edx, edx
mov rcx, rsi
mov rbx, rax
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
test rbx, rbx
je 0x14002a5c7
mov rax, qword [rdi + 0xf0]
xor r8d, r8d
mov dword [rsp + 0x40], r13d
xor r9d, r9d
mov qword [rsp + 0x38], rax
mov rdx, r14
mov rax, qword [rdi + 0x98]
mov rcx, rdi
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], 0x2000
mov qword [rsp + 0x20], r13
call fcn.1400283d8
test rax, rax
je 0x14002a5c7
mov rdx, qword [rdi + 0x98]
mov rcx, rdi
call fcn.140028cfc
test al, al
jne 0x1400297fd
lea r12d, [r13 + 1]
mov rcx, qword [rdi + 0x98]
xor edx, edx
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov eax, dword [rdi + 0x40]
movabs r8, 0x3000000000003
mov rdx, qword [r15]
mov rcx, rdi
mov byte [rsp + 0x50], 3
mov qword [rdi + 0x98], r13
lea esi, [rax + rax*2]
add rsi, qword [rdi + 0x80]
lea rax, [0x14002eca0]
mov qword [rsp + 0x48], rax
mov r9, rsi
mov dword [rsp + 0x40], r13d
movabs rax, 0x5000000000005
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rax
call fcn.1400285b4
test al, al
je 0x14002a5c7
lea r8, [rbp + 0x48]
mov ecx, 3
lea rdx, [rbp + 0x50]
call fcn.14002bd94
mov r14, qword [rbp + 0x50]
test r14, r14
je 0x14002a5c7
mov r8d, dword [rbp + 0x48]
mov r9, r14
mov rdx, rsi
mov rcx, rdi
call fcn.140028990
xor edx, edx
mov rcx, r14
mov rbx, rax
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
test rbx, rbx
je 0x14002a5c7
mov r8, qword [rdi]
mov rcx, rsi
mov edx, dword [rdi + 8]
call fcn.140028acc
test rax, rax
je 0x14002a5c7
mov r9b, byte [rdi + 0xd]
movzx edx, r12w
mov r8b, byte [rdi + 0xc]
mov rcx, rsi
call fcn.140028a7c
test rax, rax
je 0x14002a5c7
mov qword [rsp + 0x30], r13
xor r8d, r8d
mov qword [rsp + 0x28], r13
xor r9d, r9d
mov rdx, rsi
mov qword [rsp + 0x20], r13
mov rcx, rdi
call fcn.140028344
test rax, rax
je 0x14002a5c7
mov ebx, dword [rdi + 0x40]
lea rax, [0x14002ecb0]
mov rdx, qword [r15]
movabs rsi, 0x5000000000005
mov byte [rsp + 0x50], 3
movabs r8, 0x8000000000008
mov qword [rsp + 0x48], rax
mov rcx, rdi
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], r13
shl ebx, 3
add rbx, qword [rdi + 0x80]
mov qword [rsp + 0x28], r13
mov r9, rbx
mov qword [rsp + 0x20], rsi
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov qword [rsp + 0x30], r13
xor r8d, r8d
mov qword [rsp + 0x28], r13
xor r9d, r9d
mov rdx, rbx
mov qword [rsp + 0x20], r13
mov rcx, rdi
call fcn.140028344
test rax, rax
je 0x14002a5c7
mov rax, qword [rdi + 0xf8]
xor r8d, r8d
mov ecx, dword [rdi + 0x3c]
mov r9b, 4
imul rcx, qword [rdi + 0x50]
mov dword [rsp + 0x40], r13d
mov rdx, rbx
mov qword [rsp + 0x38], rax
lea rax, [0x14002ecd0]
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov qword [rsp + 0x20], rax
call fcn.1400283d8
test rax, rax
je 0x14002a5c7
mov eax, dword [rdi + 0x40]
movabs r8, 0x9000000000009
mov rdx, qword [r15]
mov rcx, rdi
mov byte [rsp + 0x50], 3
lea r12d, [rax + rax*8]
add r12, qword [rdi + 0x80]
lea rax, [0x14002ece0]
mov qword [rsp + 0x48], rax
mov r9, r12
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], 0x20000006
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rsi
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov eax, dword [rdi + 0x1c]
mov edx, 0xc
mov ecx, eax
and ecx, 0x10
test dl, al
je 0x140029ae6
neg ecx
sbb ebx, ebx
and ebx, 0x7c
add ebx, 0x200
jmp 0x140029af6
mov edx, dword [rdi + 0x1c]
mov ecx, edx
and ecx, r13d
mov eax, edx
shl ecx, 0xd
add ecx, r10d
mov r10d, ecx
bts r10d, 0xb
and al, 2
cmove r10d, ecx
and dl, 0x10
neg dl
sbb r8d, r8d
and r8d, 0x102
jmp 0x140029321
mov r10d, 0x20000006
mov r8d, 0x101
jmp 0x140029321
mov eax, ebx
sub eax, 0xa
je 0x14002931b
sub eax, r13d
je 0x140029aac
sub eax, 0xd
je 0x140029ade
sub eax, r13d
je 0x140029ade
cmp eax, r13d
je 0x140029ade
mov r8d, r15d
jmp 0x140029321
mov r10d, 0x20000026
jmp 0x140029aac
neg ecx
sbb ebx, ebx
and ebx, 0xc0
add ebx, 0xfc
lea eax, [rbx + 0x40000]
mov r8d, 0x66746e56
mov edx, eax
mov ecx, 1
mov esi, eax
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov r14, rax
test rax, rax
je 0x14002a5c7
mov r8d, esi
xor edx, edx
mov rcx, rax
call fcn.140015d40
mov eax, dword [rdi + 0x1c]
test al, 0x10
je 0x140029b37
mov r8d, dword [rdi + 0x20]
jmp 0x140029b3a
mov r8d, r13d
test al, 0xc
mov rcx, r14
setne dl
call fcn.14002b85c
mov r8d, ebx
lea rcx, [r14 + 0x40000]
mov rdx, r14
call fcn.140015a80
lea rax, [0x14002ecf0]
mov qword [rsp + 0x30], r14
xor r8d, r8d
mov qword [rsp + 0x28], rsi
mov r9b, 4
mov qword [rsp + 0x20], rax
mov rdx, r12
mov rcx, rdi
call fcn.140028344
mov rsi, rax
test rax, rax
je 0x140029bfc
mov word [rsp + 0x30], r13w
lea r9, [0x14002ebf0]
mov dword [rsp + 0x28], 0x12
mov r8b, 4
mov rdx, r12
mov dword [rsp + 0x20], r13d
mov rcx, rdi
call fcn.140028864
mov rsi, rax
test rax, rax
je 0x140029bfc
mov word [rsp + 0x30], r13w
lea r9, [0x14002ec00]
mov dword [rsp + 0x28], 0x10
mov r8b, 4
mov rdx, r12
mov dword [rsp + 0x20], r13d
mov rcx, rdi
call fcn.140028864
mov rsi, rax
test rax, rax
je 0x140029bfc
mov r9d, ebx
mov r8, r14
mov rdx, r12
mov rcx, rdi
call fcn.14002a5e4
movzx esi, al
xor edx, edx
mov rcx, r14
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
test rsi, rsi
je 0x14002a5c7
mov edx, dword [rdi + 0x3c]
movabs rsi, 0x5000000000005
mov eax, dword [rdi + 0x40]
mov byte [rsp + 0x50], 3
lea ecx, [rax + rax*4]
lea ebx, [rcx + rcx]
mov ecx, dword [rdi + 0xcc]
add rbx, qword [rdi + 0x80]
mov r9, rbx
lea r8d, [rcx + rcx]
lea ecx, [rcx*2 - 1]
add ecx, edx
neg edx
mov eax, edx
mov rdx, qword [r15]
and rcx, rax
lea rax, [0x14002ed00]
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], r8
movabs r8, 0xa00000000000a
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov qword [rsp + 0x20], rsi
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov eax, dword [rdi + 0xcc]
xor r8d, r8d
xor r9d, r9d
mov rdx, rbx
lea ecx, [rax + rax]
mov rax, qword [rdi + 0xb0]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov qword [rsp + 0x20], r13
call fcn.140028344
test rax, rax
je 0x14002a5c7
imul ebx, dword [rdi + 0x40], 0xb
mov eax, 2
mov byte [rsp + 0x50], 3
movabs r8, 0xb00000000000b
mov rcx, rdi
add rbx, qword [rdi + 0x80]
mov r9, rbx
or word [rbx + 0x16], ax
lea rax, [0x14002ed10]
mov rdx, qword [r15]
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x38], 0x10000006
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rsi
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov eax, 1
mov word [rsp + 0x30], r13w
mov dword [rsp + 0x28], eax
lea r9, [0x14002ec30]
mov r8b, 4
mov dword [rsp + 0x20], 0x30
mov rdx, rbx
mov rcx, rdi
call fcn.140028864
test rax, rax
je 0x14002a5c7
mov ebx, 0xc
lea r8, [rbp + 0x48]
mov ecx, ebx
lea rdx, [rbp + 0x50]
call fcn.14002bd94
mov r12, qword [rbp + 0x50]
test r12, r12
je 0x14002a5c7
mov r13d, dword [rbp + 0x48]
xor r15d, r15d
mov r14d, ebx
mov r9, r12
imul r14d, dword [rdi + 0x40]
mov r8, r13
mov rcx, rdi
add r14, qword [rdi + 0x80]
mov rdx, r14
call fcn.140028990
mov rsi, rax
test rax, rax
je 0x140029deb
mov qword [rsp + 0x30], r15
xor r8d, r8d
mov qword [rsp + 0x28], r15
xor r9d, r9d
mov rdx, r14
mov qword [rsp + 0x20], r15
mov rcx, rdi
call fcn.140028344
mov rsi, rax
mov r14d, 1
test rax, rax
je 0x140029df1
add ebx, r14d
cmp ebx, 0x10
jb 0x140029d8b
jmp 0x140029df1
mov r14d, 1
xor edx, edx
mov rcx, r12
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
xor r12d, r12d
lea r15, [rdi + 0xa0]
test rsi, rsi
je 0x14002a5c7
mov ecx, dword [rdi + 0x40]
lea rax, [0x14002ed20]
mov rdx, qword [rdi + 0x80]
lea r13d, [r12 + 0xc]
mov byte [rsp + 0x50], 3
movabs r8, 0x1000000000018
mov qword [rsp + 0x48], rax
movabs rax, 0xb00000000000b
lea ebx, [rcx + rcx*2]
mov dword [rsp + 0x40], r12d
imul esi, ecx, 0xb
mov rcx, rdi
mov dword [rsp + 0x38], 0x20000026
mov qword [rsp + 0x30], r12
shl ebx, 3
add rbx, rdx
mov qword [rsp + 0x28], r12
add rsi, rdx
mov qword [rsp + 0x20], rax
mov r9, rbx
mov rdx, rsi
or word [rbx + 0x16], r13w
call fcn.140028654
test al, al
je 0x14002a5c7
mov word [rsp + 0x30], r12w
lea r9, [0x14002ec20]
mov dword [rsp + 0x28], 0x11
lea r8d, [r12 + 2]
mov rdx, rbx
mov dword [rsp + 0x20], r12d
mov rcx, rdi
call fcn.140028864
test rax, rax
je 0x14002a5c7
mov word [rsp + 0x30], r12w
lea r9, [0x14002ec10]
mov dword [rsp + 0x28], 0x10
lea r8d, [r12 + 2]
mov rdx, rbx
mov dword [rsp + 0x20], r12d
mov rcx, rdi
call fcn.140028864
test rax, rax
je 0x14002a5c7
mov rdx, rbx
mov rcx, rdi
call fcn.140028fb4
test al, al
je 0x14002a5c7
imul ebx, dword [rdi + 0x40], 0x19
lea rax, [0x14002ed30]
mov byte [rsp + 0x50], 3
movabs r8, 0x1000000000019
mov qword [rsp + 0x48], rax
mov rdx, rsi
mov dword [rsp + 0x40], r12d
movabs rax, 0xb00000000000b
mov dword [rsp + 0x38], 0x20000026
mov rcx, rdi
add rbx, qword [rdi + 0x80]
mov qword [rsp + 0x30], r12
mov r9, rbx
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rax
or word [rbx + 0x16], r13w
call fcn.140028654
test al, al
je 0x14002a5c7
mov word [rsp + 0x30], r12w
lea r9, [0x14002ec20]
mov dword [rsp + 0x28], 0x13
lea r8d, [r12 + 2]
mov rdx, rbx
mov dword [rsp + 0x20], r12d
mov rcx, rdi
call fcn.140028864
test rax, rax
je 0x14002a5c7
imul ebx, dword [rdi + 0x40], 0x1a
lea rax, [0x14002ed40]
mov byte [rsp + 0x50], 3
movabs r8, 0x100000000001a
mov qword [rsp + 0x48], rax
mov rdx, rsi
mov dword [rsp + 0x40], r12d
movabs rax, 0xb00000000000b
mov dword [rsp + 0x38], 0x20000026
mov rcx, rdi
add rbx, qword [rdi + 0x80]
mov qword [rsp + 0x30], r12
mov r9, rbx
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rax
or word [rbx + 0x16], r13w
call fcn.140028654
test al, al
je 0x14002a5c7
mov word [rsp + 0x30], r12w
lea esi, [r12 + 2]
mov r8b, sil
mov dword [rsp + 0x28], 0x13
lea r9, [0x14002ed60]
mov dword [rsp + 0x20], r12d
mov rdx, rbx
mov rcx, rdi
call fcn.140028864
test rax, rax
je 0x14002a5c7
mov eax, dword [rdi + 0x1c]
test al, 4
je 0x14002a0eb
imul ebx, dword [rdi + 0x40], 0x1b
lea rcx, [0x14002eba0]
mov byte [rsp + 0x50], 3
movabs r8, 0x100000000001b
mov qword [rsp + 0x48], rcx
mov rcx, rdi
mov dword [rsp + 0x40], r12d
add rbx, qword [rdi + 0x80]
mov r9, rbx
or word [rbx + 0x16], si
mov eax, dword [rdi + 0x1c]
mov rdx, qword [r15]
and eax, esi
bts eax, 0x12
shl eax, 0xa
mov dword [rsp + 0x38], eax
movabs rax, 0x5000000000005
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rax
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov eax, dword [rdi + 0x1c]
lea r9, [0x14002ec30]
shr eax, 1
mov r8b, 4
and ax, r14w
mov rdx, rbx
mov word [rsp + 0x30], ax
mov rcx, rdi
mov dword [rsp + 0x28], r14d
mov dword [rsp + 0x20], 0x30
call fcn.140028864
test rax, rax
je 0x14002a5c7
mov eax, dword [rdi + 0x1c]
test al, 8
je 0x14002a2a7
mov r14, qword [rdi + 0x28]
and al, 4
mov r13, qword [rdi + 0x30]
neg al
mov dword [rbp + 0x48], r12d
sbb ebx, ebx
neg ebx
add ebx, 0x1b
cmp byte [rdi + 0x38], r12b
jbe 0x14002a2a7
test r14, r14
je 0x14002a5c7
mov ecx, 1
mov esi, 0xff
mov rax, r14
lea r8d, [rcx + 1]
cmp word [rax], r12w
je 0x14002a13f
add rax, r8
sub rsi, rcx
jne 0x14002a131
test rsi, rsi
je 0x14002a5c7
movabs rax, 0x1000000000000
mov edx, ebx
or rdx, rax
mov r12d, ebx
imul r12d, dword [rdi + 0x40]
mov qword [rbp + 0x50], rdx
add r12, qword [rdi + 0x80]
mov r9, r12
or word [r12 + 0x16], r8w
movzx eax, word [r13]
neg ax
mov eax, dword [rdi + 0x1c]
sbb cl, cl
and eax, r8d
and cl, 0xfe
bts eax, 0x12
add cl, 3
shl eax, 0xa
mov byte [rsp + 0x50], cl
mov r8, rdx
mov rdx, qword [r15]
xor ecx, ecx
mov qword [rsp + 0x48], r14
mov dword [rsp + 0x40], ecx
mov dword [rsp + 0x38], eax
movabs rax, 0x5000000000005
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov qword [rsp + 0x20], rax
call fcn.1400285b4
xor ecx, ecx
test al, al
je 0x14002a5c7
cmp word [r13], cx
je 0x14002a22e
mov eax, dword [rdi + 0x1c]
lea edx, [rcx + 2]
mov r8, qword [rbp + 0x50]
and eax, edx
mov byte [rsp + 0x50], dl
bts eax, 0x12
mov rdx, qword [r15]
mov r9, r12
mov qword [rsp + 0x48], r13
mov dword [rsp + 0x40], ecx
shl eax, 0xa
mov dword [rsp + 0x38], eax
movabs rax, 0x5000000000005
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov qword [rsp + 0x20], rax
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov eax, dword [rdi + 0x1c]
lea r9, [0x14002ec30]
mov ecx, 1
shr eax, 1
and ax, cx
mov r8b, 4
mov word [rsp + 0x30], ax
mov rdx, r12
mov dword [rsp + 0x28], ecx
mov rcx, rdi
mov dword [rsp + 0x20], 0x30
call fcn.140028864
xor r12d, r12d
test rax, rax
je 0x14002a5c7
mov edx, dword [rbp + 0x48]
lea eax, [r12 + 1]
add edx, eax
add ebx, eax
mov ecx, 0xff
mov dword [rbp + 0x48], edx
sub rcx, rsi
add rcx, rcx
neg rsi
sbb rax, rax
add r14, 2
and rax, rcx
add r13, 0x1a
add r14, rax
movzx eax, byte [rdi + 0x38]
cmp edx, eax
jb 0x14002a117
mov eax, dword [rdi + 0xb8]
lea rcx, [0x14002ed70]
mov rbx, qword [rdi + 0x80]
movabs r14, 0x5000000000005
mov rdx, qword [r15]
mov r9, rbx
mov byte [rsp + 0x50], 3
movabs r8, 0x1000000000000
mov qword [rsp + 0x48], rcx
mov rcx, rdi
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r14
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov rax, qword [rdi + 0xd0]
xor r8d, r8d
mov ecx, dword [rdi + 0xb8]
xor r9d, r9d
mov rdx, rbx
lea r13d, [r8 + 1]
mov dword [rsp + 0x40], r13d
mov qword [rsp + 0x38], rax
mov rax, qword [rdi + 0x80]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rcx
mov rcx, rdi
mov qword [rsp + 0x20], r12
call fcn.1400283d8
test rax, rax
je 0x14002a5c7
mov rax, qword [rdi + 0xd8]
xor r9d, r9d
mov ecx, dword [rdi + 0xbc]
xor r8d, r8d
mov dword [rsp + 0x38], r12d
mov rdx, rbx
mov qword [rsp + 0x30], rax
mov rax, qword [rdi + 0x88]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
mov rcx, rdi
call fcn.1400282f0
test rax, rax
je 0x14002a5c7
mov rax, qword [rdi + 0xe0]
movabs r8, 0x1000000000001
mov ebx, dword [rdi + 0x3c]
mov rcx, rdi
mov esi, dword [rdi + 0x40]
add rsi, qword [rdi + 0x80]
imul rbx, qword [rax + 0x10]
mov rdx, qword [r15]
lea rax, [0x14002ed80]
mov byte [rsp + 0x50], 3
mov r9, rsi
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov rax, qword [rdi + 0xe0]
xor r8d, r8d
mov dword [rsp + 0x40], r13d
xor r9d, r9d
mov qword [rsp + 0x38], rax
mov rdx, rsi
mov rax, qword [rdi + 0x80]
mov rcx, rdi
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r12
call fcn.1400283d8
test rax, rax
je 0x14002a5c7
mov r8d, dword [rdi + 0xc0]
mov eax, dword [rdi + 0x40]
mov byte [rsp + 0x50], 3
lea edx, [r8 - 1]
lea ecx, [rax + rax*2]
lea r9d, [rcx + rcx]
mov ecx, dword [rdi + 0x3c]
add r9, qword [rdi + 0x80]
add edx, ecx
neg ecx
mov eax, ecx
mov rcx, rdi
and rdx, rax
lea rax, [0x14002eda0]
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x38], 6
mov qword [rsp + 0x30], r8
movabs r8, 0x6000000000006
mov qword [rsp + 0x28], rdx
mov rdx, qword [r15]
mov qword [rsp + 0x20], r14
call fcn.1400285b4
test al, al
je 0x14002a5c7
mov eax, dword [rdi + 0x40]
lea r9, [0x14002ec30]
mov r8b, 4
mov rcx, rdi
lea edx, [rax + rax*4]
mov rax, qword [r15]
add rdx, qword [rdi + 0x80]
mov qword [rsp + 0x28], rax
mov eax, dword [rdi + 0x44]
mov dword [rsp + 0x20], eax
call fcn.140028790
test rax, rax
je 0x14002a5c7
mov eax, dword [rdi + 0x40]
lea r8d, [r13 + 0x7f]
xor r9d, r9d
lea ecx, [rax + rax*2]
mov rax, qword [rdi + 0x90]
lea edx, [rcx + rcx]
mov qword [rsp + 0x38], rax
mov ecx, dword [rdi + 0xc0]
add rdx, qword [rdi + 0x80]
mov qword [rsp + 0x30], rcx
mov rcx, rdi
mov qword [rsp + 0x28], r12
mov byte [rsp + 0x20], r12b
call fcn.14002c190
test rax, rax
je 0x14002a5c7
mov ecx, dword [rdi + 0xb8]
xor edx, edx
mov eax, ecx
mov esi, r12d
div dword [rdi + 0x40]
mov r14d, eax
test eax, eax
je 0x14002a576
mov edx, dword [rdi + 0x40]
mov ecx, edx
imul ecx, esi
add rcx, qword [rdi + 0x80]
cmp dword [rcx], 0x454c4946
jne 0x14002a568
call fcn.14002ae4c
test al, al
je 0x14002a5c7
add esi, r13d
cmp esi, r14d
jb 0x14002a548
mov ecx, dword [rdi + 0xb8]
mov r9, qword [rdi + 0x80]
mov rdx, qword [rdi + 0xd0]
mov r8d, ecx
mov rcx, rdi
mov dword [rsp + 0x20], r12d
call fcn.14002c804
mov ecx, dword [rdi + 0xb8]
cmp rax, rcx
jne 0x14002a5c7
mov r9, qword [rdi + 0x80]
mov r8, rbx
mov rdx, qword [rdi + 0xe0]
mov rcx, rdi
mov dword [rsp + 0x20], r12d
call fcn.14002c804
cmp rax, rbx
jne 0x14002a5c7
mov al, r13b
jmp 0x14002a5c9
xor al, al
mov rbx, qword [rsp + 0xb8]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret