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

Disassembly:
mov word [rsp + 0x10], dx
mov qword [rsp + 8], rcx
sub rsp, 0x138
mov dword [rsp + 0x70], 0
mov word [rsp + 0x60], 0
mov word [rsp + 0x8c], 0
mov qword [rsp + 0xa0], 0
mov rax, qword [rsp + 0x140]
mov rax, qword [rax]
mov qword [rsp + 0xb0], rax
mov rax, qword [rsp + 0x140]
movzx eax, byte [rax + 0x40]
mov dword [rsp + 0x54], eax
cmp dword [rsp + 0x54], 1
jg 0x1800d903d
mov dword [rsp + 0x120], 1
jmp 0x1800d906a
cmp dword [rsp + 0x54], 2
jne 0x1800d9051
mov dword [rsp + 0x124], 5
jmp 0x1800d905c
mov dword [rsp + 0x124], 0xa
mov eax, dword [rsp + 0x124]
mov dword [rsp + 0x120], eax
mov eax, dword [rsp + 0x120]
mov dword [rsp + 0x84], eax
mov rax, qword [rsp + 0x140]
cmp qword [rax + 0x10], 0
je 0x1800d9093
movsx eax, word [rsp + 0x148]
test eax, eax
jne 0x1800d90a0
mov dword [rsp + 0xc0], 0
jmp 0x1800d90b5
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 0x10]
mov eax, dword [rax]
mov dword [rsp + 0xc0], eax
movsxd rax, dword [rsp + 0x54]
lea rax, [rax*8 + 0x20]
movsxd rcx, dword [rsp + 0x84]
imul rax, rcx
shl rax, 1
mov dword [rsp + 0x88], eax
movsxd rax, dword [rsp + 0xc0]
movsxd rcx, dword [rsp + 0x88]
lea rax, [rcx + rax*2]
mov dword [rsp + 0x88], eax
movsxd rax, dword [rsp + 0x88]
mov rdx, rax
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rax]
call fcn.18000beb0
mov qword [rsp + 0x98], rax
cmp qword [rsp + 0x98], 0
jne 0x1800d912b
mov eax, 7
jmp 0x1800d9f0c
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x58], rax
movsxd rax, dword [rsp + 0x84]
imul rax, rax, 0x20
mov rcx, qword [rsp + 0x58]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0xb8], rax
mov r8d, 0x20
xor edx, edx
mov rcx, qword [rsp + 0xb8]
call sub.msvcrt.dll_memset
movsxd rax, dword [rsp + 0x84]
imul rax, rax, 0x20
mov rcx, qword [rsp + 0xb8]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x78], rax
mov eax, dword [rsp + 0x84]
shl eax, 1
mov dword [rsp + 0x90], eax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x48], rax
jmp 0x1800d91d8
mov eax, dword [rsp + 0x90]
dec eax
mov dword [rsp + 0x90], eax
mov rax, qword [rsp + 0x48]
add rax, 0x20
mov qword [rsp + 0x48], rax
movsxd rax, dword [rsp + 0x54]
mov rcx, qword [rsp + 0x78]
lea rax, [rcx + rax*8]
mov qword [rsp + 0x78], rax
cmp dword [rsp + 0x90], 0
jle 0x1800d91f2
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x78]
mov qword [rax + 0x18], rcx
jmp 0x1800d91a7
cmp dword [rsp + 0xc0], 0
je 0x1800d9226
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0xa0], rax
movsxd rax, dword [rsp + 0xc0]
shl rax, 1
mov r8, rax
xor edx, edx
mov rcx, qword [rsp + 0xa0]
call sub.msvcrt.dll_memset
mov rax, qword [rsp + 0xb0]
movsx eax, word [rax + 0xd8]
cmp eax, 0x30
jge 0x1800d9252
mov rax, qword [rsp + 0xb0]
movsx eax, word [rax + 0xd8]
mov dword [rsp + 0x128], eax
jmp 0x1800d925d
mov dword [rsp + 0x128], 0x30
mov rax, qword [rsp + 0xb8]
movzx ecx, word [rsp + 0x128]
mov word [rax + 0x10], cx
mov dword [rsp + 0xa8], 1
cmp dword [rsp + 0xc0], 0
je 0x1800d92bb
cmp dword [rsp + 0x54], 0
jle 0x1800d929a
mov dword [rsp + 0x12c], 0xffffffff
jmp 0x1800d92a8
mov eax, dword [rsp + 0xc0]
mov dword [rsp + 0x12c], eax
mov rax, qword [rsp + 0xb8]
movzx ecx, byte [rsp + 0x12c]
mov byte [rax + 0x16], cl
mov dword [rsp + 0x50], 0
jmp 0x1800d92cf
mov eax, dword [rsp + 0x50]
inc eax
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0x54]
cmp dword [rsp + 0x50], eax
jge 0x1800d9955
mov dword [rsp + 0x80], 0
mov dword [rsp + 0x90], 0
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0x48], rax
jmp 0x1800d9320
mov eax, dword [rsp + 0x90]
inc eax
mov dword [rsp + 0x90], eax
mov rax, qword [rsp + 0x48]
add rax, 0x20
mov qword [rsp + 0x48], rax
mov eax, dword [rsp + 0xa8]
cmp dword [rsp + 0x90], eax
jge 0x1800d991e
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 0x58]
mov qword [rsp + 0x68], rax
jmp 0x1800d9355
mov rax, qword [rsp + 0x68]
mov rax, qword [rax + 0x50]
mov qword [rsp + 0x68], rax
cmp qword [rsp + 0x68], 0
je 0x1800d9919
mov rax, qword [rsp + 0x48]
mov rax, qword [rax]
not rax
mov rcx, qword [rsp + 0x68]
mov rcx, qword [rcx]
and rcx, rax
mov rax, rcx
test rax, rax
je 0x1800d9381
jmp 0x1800d9347
mov rax, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x48]
mov rcx, qword [rcx]
mov rax, qword [rax + 8]
and rax, rcx
test rax, rax
je 0x1800d939c
jmp 0x1800d9347
mov rax, qword [rsp + 0x68]
mov eax, dword [rax + 0x38]
and eax, 0x4000
test eax, eax
je 0x1800d93bd
mov rax, qword [rsp + 0x48]
movsx eax, word [rax + 0x10]
cmp eax, 3
jge 0x1800d93bd
jmp 0x1800d9347
mov rax, qword [rsp + 0x68]
movsx eax, word [rax + 0x14]
mov rcx, qword [rsp + 0x48]
movsx ecx, word [rcx + 0x10]
add eax, ecx
movzx edx, ax
mov rax, qword [rsp + 0x68]
movzx ecx, word [rax + 0x12]
call fcn.1800b7810
mov word [rsp + 0xdc], ax
mov rax, qword [rsp + 0x48]
movzx edx, word [rax + 0x14]
movzx ecx, word [rsp + 0xdc]
call fcn.1800b7810
mov word [rsp + 0xdc], ax
mov rax, qword [rsp + 0x48]
movsx eax, word [rax + 0x10]
mov rcx, qword [rsp + 0x68]
movsx ecx, word [rcx + 0x16]
add eax, ecx
mov word [rsp + 0xd8], ax
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x68]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
or rax, rcx
mov qword [rsp + 0xd0], rax
mov rax, qword [rsp + 0x48]
movzx eax, byte [rax + 0x16]
mov byte [rsp + 0xc8], al
movsx eax, byte [rsp + 0xc8]
test eax, eax
jge 0x1800d94bd
mov qword [rsp + 0xe0], 0
lea rax, [rsp + 0xe0]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x28], rax
movzx eax, word [rsp + 0x50]
mov word [rsp + 0x20], ax
mov rax, qword [rsp + 0x140]
movzx r9d, word [rax + 0x3c]
mov r8, qword [rsp + 0x48]
mov rax, qword [rsp + 0x140]
mov rdx, qword [rax + 0x10]
mov rcx, qword [rsp + 0x140]
call fcn.1800d9f20
mov byte [rsp + 0xc8], al
jmp 0x1800d94ce
mov rax, qword [rsp + 0x48]
mov rax, qword [rax + 8]
mov qword [rsp + 0xe0], rax
movsx eax, byte [rsp + 0xc8]
test eax, eax
jl 0x1800d9579
movsx eax, byte [rsp + 0xc8]
cmp eax, dword [rsp + 0xc0]
jge 0x1800d9579
movsx rax, byte [rsp + 0xc8]
mov rcx, qword [rsp + 0xa0]
movsx eax, word [rcx + rax*2]
test eax, eax
jne 0x1800d9549
movsx eax, byte [rsp + 0xc8]
mov r9d, eax
mov r8d, dword [rsp + 0xc0]
movzx edx, word [rsp + 0x148]
mov rcx, qword [rsp + 0x140]
call fcn.1800dac90
movsx rcx, byte [rsp + 0xc8]
mov rdx, qword [rsp + 0xa0]
mov word [rdx + rcx*2], ax
movsx rax, byte [rsp + 0xc8]
mov rcx, qword [rsp + 0xa0]
movzx edx, word [rcx + rax*2]
movzx ecx, word [rsp + 0xdc]
call fcn.1800b7810
cwde
add eax, 3
mov word [rsp + 0xcc], ax
jmp 0x1800d959c
movzx eax, word [rsp + 0xdc]
mov word [rsp + 0xcc], ax
movsx eax, word [rsp + 0xdc]
sub eax, 2
mov word [rsp + 0xdc], ax
cmp dword [rsp + 0x50], 0
jne 0x1800d95e1
mov rax, qword [rsp + 0x68]
mov eax, dword [rax + 0x38]
and eax, 0x2000000
test eax, eax
je 0x1800d95e1
cmp dword [rsp + 0x54], 1
jle 0x1800d95e1
movsx eax, word [rsp + 0xcc]
sub eax, 0xa
mov word [rsp + 0xcc], ax
movsx eax, word [rsp + 0xd8]
sub eax, 0x1e
mov word [rsp + 0xd8], ax
mov dword [rsp + 0xc4], 0
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x40], rax
jmp 0x1800d9616
mov eax, dword [rsp + 0xc4]
inc eax
mov dword [rsp + 0xc4], eax
mov rax, qword [rsp + 0x40]
add rax, 0x20
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0x80]
cmp dword [rsp + 0xc4], eax
jge 0x1800d9658
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0xd0]
cmp qword [rax], rcx
jne 0x1800d9656
mov rax, qword [rsp + 0x40]
movsx eax, byte [rax + 0x16]
movsx ecx, byte [rsp + 0xc8]
xor eax, ecx
and eax, 0x80
test eax, eax
jne 0x1800d9656
jmp 0x1800d9658
jmp 0x1800d95f8
mov eax, dword [rsp + 0x80]
cmp dword [rsp + 0xc4], eax
jl 0x1800d9710
mov eax, dword [rsp + 0x84]
cmp dword [rsp + 0x80], eax
jl 0x1800d96b7
movsx eax, word [rsp + 0xcc]
movsx ecx, word [rsp + 0x60]
cmp eax, ecx
jg 0x1800d96b2
movsx eax, word [rsp + 0xcc]
movsx ecx, word [rsp + 0x60]
cmp eax, ecx
jne 0x1800d96b7
movsx eax, word [rsp + 0xdc]
movsx ecx, word [rsp + 0x8c]
cmp eax, ecx
jl 0x1800d96b7
jmp 0x1800d9347
mov eax, dword [rsp + 0x84]
cmp dword [rsp + 0x80], eax
jge 0x1800d96e7
mov eax, dword [rsp + 0x80]
mov dword [rsp + 0xc4], eax
mov eax, dword [rsp + 0x80]
inc eax
mov dword [rsp + 0x80], eax
jmp 0x1800d96f2
mov eax, dword [rsp + 0x70]
mov dword [rsp + 0xc4], eax
movsxd rax, dword [rsp + 0xc4]
imul rax, rax, 0x20
mov rcx, qword [rsp + 0x58]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x40], rax
jmp 0x1800d977e
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x12]
movsx ecx, word [rsp + 0xcc]
cmp eax, ecx
jl 0x1800d9779
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x12]
movsx ecx, word [rsp + 0xcc]
cmp eax, ecx
jne 0x1800d977e
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x10]
movsx ecx, word [rsp + 0xd8]
cmp eax, ecx
jl 0x1800d9779
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x10]
movsx ecx, word [rsp + 0xd8]
cmp eax, ecx
jne 0x1800d977e
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x14]
movsx ecx, word [rsp + 0xdc]
cmp eax, ecx
jg 0x1800d977e
jmp 0x1800d9347
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x68]
mov rcx, qword [rcx + 8]
mov rax, qword [rax]
or rax, rcx
mov rcx, qword [rsp + 0x40]
mov qword [rcx], rax
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0xe0]
mov qword [rax + 8], rcx
mov rax, qword [rsp + 0x40]
movzx ecx, word [rsp + 0xd8]
mov word [rax + 0x10], cx
mov rax, qword [rsp + 0x40]
movzx ecx, word [rsp + 0xcc]
mov word [rax + 0x12], cx
mov rax, qword [rsp + 0x40]
movzx ecx, word [rsp + 0xdc]
mov word [rax + 0x14], cx
mov rax, qword [rsp + 0x40]
movzx ecx, byte [rsp + 0xc8]
mov byte [rax + 0x16], cl
movsxd rax, dword [rsp + 0x50]
shl rax, 3
mov r8, rax
mov rax, qword [rsp + 0x48]
mov rdx, qword [rax + 0x18]
mov rax, qword [rsp + 0x40]
mov rcx, qword [rax + 0x18]
call sub.msvcrt.dll_memcpy
movsxd rax, dword [rsp + 0x50]
mov rcx, qword [rsp + 0x40]
mov rcx, qword [rcx + 0x18]
mov rdx, qword [rsp + 0x68]
mov qword [rcx + rax*8], rdx
mov eax, dword [rsp + 0x84]
cmp dword [rsp + 0x80], eax
jl 0x1800d9914
mov dword [rsp + 0x70], 0
mov rax, qword [rsp + 0x58]
movzx eax, word [rax + 0x12]
mov word [rsp + 0x60], ax
mov rax, qword [rsp + 0x58]
movzx eax, word [rax + 0x10]
mov word [rsp + 0x8c], ax
mov dword [rsp + 0xc4], 1
mov rax, qword [rsp + 0x58]
add rax, 0x20
mov qword [rsp + 0x40], rax
jmp 0x1800d989c
mov eax, dword [rsp + 0xc4]
inc eax
mov dword [rsp + 0xc4], eax
mov rax, qword [rsp + 0x40]
add rax, 0x20
mov qword [rsp + 0x40], rax
mov eax, dword [rsp + 0x84]
cmp dword [rsp + 0xc4], eax
jge 0x1800d9914
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x12]
movsx ecx, word [rsp + 0x60]
cmp eax, ecx
jg 0x1800d98e5
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x12]
movsx ecx, word [rsp + 0x60]
cmp eax, ecx
jne 0x1800d990f
mov rax, qword [rsp + 0x40]
movsx eax, word [rax + 0x14]
movsx ecx, word [rsp + 0x8c]
cmp eax, ecx
jle 0x1800d990f
mov rax, qword [rsp + 0x40]
movzx eax, word [rax + 0x12]
mov word [rsp + 0x60], ax
mov rax, qword [rsp + 0x40]
movzx eax, word [rax + 0x14]
mov word [rsp + 0x8c], ax
mov eax, dword [rsp + 0xc4]
mov dword [rsp + 0x70], eax
jmp 0x1800d987e
jmp 0x1800d9347
jmp 0x1800d9302
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0x58], rax
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0xb8], rax
mov eax, dword [rsp + 0x80]
mov dword [rsp + 0xa8], eax
jmp 0x1800d92c5
cmp dword [rsp + 0xa8], 0
jne 0x1800d9995
lea rdx, str.no_query_solution
mov rcx, qword [rsp + 0xb0]
call fcn.18000db80
mov rdx, qword [rsp + 0x98]
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rax]
call fcn.18000bb60
mov eax, 1
jmp 0x1800d9f0c
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0x48], rax
mov dword [rsp + 0x90], 1
jmp 0x1800d99bf
mov eax, dword [rsp + 0x90]
inc eax
mov dword [rsp + 0x90], eax
mov eax, dword [rsp + 0xa8]
cmp dword [rsp + 0x90], eax
jge 0x1800d9a16
mov rax, qword [rsp + 0x48]
movsx eax, word [rax + 0x12]
movsxd rcx, dword [rsp + 0x90]
imul rcx, rcx, 0x20
mov rdx, qword [rsp + 0xb8]
movsx ecx, word [rdx + rcx + 0x12]
cmp eax, ecx
jle 0x1800d9a14
movsxd rax, dword [rsp + 0x90]
imul rax, rax, 0x20
mov rcx, qword [rsp + 0xb8]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x48], rax
jmp 0x1800d99af
mov dword [rsp + 0x50], 0
jmp 0x1800d9a2a
mov eax, dword [rsp + 0x50]
inc eax
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0x54]
cmp dword [rsp + 0x50], eax
jge 0x1800d9ac5
movsxd rax, dword [rsp + 0x50]
imul rax, rax, 0x70
mov rcx, qword [rsp + 0x140]
lea rax, [rcx + rax + 0x360]
mov qword [rsp + 0xe8], rax
movsxd rax, dword [rsp + 0x50]
mov rcx, qword [rsp + 0x48]
mov rcx, qword [rcx + 0x18]
mov rax, qword [rcx + rax*8]
mov qword [rsp + 0x68], rax
mov rax, qword [rsp + 0xe8]
mov rcx, qword [rsp + 0x68]
mov qword [rax + 0x60], rcx
mov rax, qword [rsp + 0xe8]
mov rcx, qword [rsp + 0x68]
movzx ecx, byte [rcx + 0x10]
mov byte [rax + 0x40], cl
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 8]
mov rcx, qword [rsp + 0xe8]
movzx ecx, byte [rcx + 0x40]
imul rcx, rcx, 0x68
mov rdx, qword [rsp + 0xe8]
mov eax, dword [rax + rcx + 0x4c]
mov dword [rdx + 4], eax
jmp 0x1800d9a20
mov rax, qword [rsp + 0x140]
movzx eax, word [rax + 0x3c]
and eax, 0x100
test eax, eax
je 0x1800d9b9d
mov rax, qword [rsp + 0x140]
movzx eax, word [rax + 0x3c]
and eax, 0x80
test eax, eax
jne 0x1800d9b9d
mov rax, qword [rsp + 0x140]
movzx eax, byte [rax + 0x43]
test eax, eax
jne 0x1800d9b9d
movsx eax, word [rsp + 0x148]
test eax, eax
je 0x1800d9b9d
mov eax, dword [rsp + 0x54]
dec eax
cdqe
mov rcx, qword [rsp + 0x48]
mov rcx, qword [rcx + 0x18]
mov edx, dword [rsp + 0x54]
dec edx
lea r8, [rsp + 0xf8]
mov qword [rsp + 0x30], r8
mov rax, qword [rcx + rax*8]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], dx
mov r9w, 0x80
mov r8, qword [rsp + 0x48]
mov rax, qword [rsp + 0x140]
mov rdx, qword [rax + 0x18]
mov rcx, qword [rsp + 0x140]
call fcn.1800d9f20
movsx eax, al
mov dword [rsp + 0xf0], eax
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 0x18]
mov eax, dword [rax]
cmp dword [rsp + 0xf0], eax
jne 0x1800d9b9d
mov rax, qword [rsp + 0x140]
mov byte [rax + 0x43], 2
mov rax, qword [rsp + 0x140]
mov eax, dword [rax + 0x44]
and eax, 0xfffffffb
mov rcx, qword [rsp + 0x140]
mov dword [rcx + 0x44], eax
mov rax, qword [rsp + 0x140]
cmp qword [rax + 0x10], 0
je 0x1800d9edd
mov rax, qword [rsp + 0x140]
mov rcx, qword [rsp + 0x48]
movzx ecx, byte [rcx + 0x16]
mov byte [rax + 0x41], cl
mov rax, qword [rsp + 0x140]
movzx eax, word [rax + 0x3c]
and eax, 0x80
test eax, eax
je 0x1800d9c6d
mov rax, qword [rsp + 0x48]
movsx eax, byte [rax + 0x16]
mov rcx, qword [rsp + 0x140]
mov rcx, qword [rcx + 0x10]
cmp eax, dword [rcx]
jne 0x1800d9c17
mov rax, qword [rsp + 0x140]
mov byte [rax + 0x43], 2
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 0x20]
cmp qword [rax + 0x48], 0
je 0x1800d9c68
mov rax, qword [rsp + 0x140]
movsx eax, byte [rax + 0x41]
mov rcx, qword [rsp + 0x140]
mov rcx, qword [rcx + 0x20]
mov rcx, qword [rcx + 0x48]
cmp eax, dword [rcx]
jle 0x1800d9c68
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 0x48]
mov rcx, qword [rsp + 0x140]
movzx eax, byte [rax]
mov byte [rcx + 0x41], al
jmp 0x1800d9dec
mov rax, qword [rsp + 0x140]
mov rcx, qword [rsp + 0x48]
mov rcx, qword [rcx + 8]
mov qword [rax + 0x68], rcx
mov rax, qword [rsp + 0x140]
movsx eax, byte [rax + 0x41]
test eax, eax
jg 0x1800d9da8
mov rax, qword [rsp + 0x140]
mov byte [rax + 0x41], 0
cmp dword [rsp + 0x54], 0
jle 0x1800d9da6
mov eax, dword [rsp + 0x54]
dec eax
cdqe
mov rcx, qword [rsp + 0x48]
mov rcx, qword [rcx + 0x18]
mov rax, qword [rcx + rax*8]
mov eax, dword [rax + 0x38]
mov dword [rsp + 0x100], eax
mov eax, dword [rsp + 0x100]
and eax, 0x1000
test eax, eax
jne 0x1800d9da6
mov eax, dword [rsp + 0x100]
and eax, 0x104
cmp eax, 0x104
je 0x1800d9da6
mov qword [rsp + 0x108], 0
mov eax, dword [rsp + 0x54]
dec eax
cdqe
mov rcx, qword [rsp + 0x48]
mov rcx, qword [rcx + 0x18]
mov edx, dword [rsp + 0x54]
dec edx
lea r8, [rsp + 0x108]
mov qword [rsp + 0x30], r8
mov rax, qword [rcx + rax*8]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], dx
mov r9w, 0x800
mov r8, qword [rsp + 0x48]
mov rax, qword [rsp + 0x140]
mov rdx, qword [rax + 0x10]
mov rcx, qword [rsp + 0x140]
call fcn.1800d9f20
movsx eax, al
mov dword [rsp + 0x104], eax
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 0x10]
mov eax, dword [rax]
cmp dword [rsp + 0x104], eax
jne 0x1800d9da6
mov rax, qword [rsp + 0x140]
mov eax, dword [rax + 0x44]
or eax, 4
mov rcx, qword [rsp + 0x140]
mov dword [rcx + 0x44], eax
mov rax, qword [rsp + 0x140]
mov rcx, qword [rsp + 0x108]
mov qword [rax + 0x68], rcx
jmp 0x1800d9dec
cmp dword [rsp + 0x54], 0
je 0x1800d9dec
mov rax, qword [rsp + 0x140]
movsx eax, byte [rax + 0x41]
cmp eax, 1
jne 0x1800d9dec
mov rax, qword [rsp + 0x140]
movzx eax, word [rax + 0x3c]
and eax, 3
test eax, eax
je 0x1800d9dec
mov rax, qword [rsp + 0x140]
mov eax, dword [rax + 0x44]
or eax, 4
mov rcx, qword [rsp + 0x140]
mov dword [rcx + 0x44], eax
mov rax, qword [rsp + 0x140]
movzx eax, word [rax + 0x3c]
and eax, 0x200
test eax, eax
je 0x1800d9edd
mov rax, qword [rsp + 0x140]
movsx eax, byte [rax + 0x41]
mov rcx, qword [rsp + 0x140]
mov rcx, qword [rcx + 0x10]
cmp eax, dword [rcx]
jne 0x1800d9edd
cmp dword [rsp + 0x54], 0
jle 0x1800d9edd
mov qword [rsp + 0x118], 0
mov eax, dword [rsp + 0x54]
dec eax
cdqe
mov rcx, qword [rsp + 0x48]
mov rcx, qword [rcx + 0x18]
mov edx, dword [rsp + 0x54]
dec edx
lea r8, [rsp + 0x118]
mov qword [rsp + 0x30], r8
mov rax, qword [rcx + rax*8]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], dx
xor r9d, r9d
mov r8, qword [rsp + 0x48]
mov rax, qword [rsp + 0x140]
mov rdx, qword [rax + 0x10]
mov rcx, qword [rsp + 0x140]
call fcn.1800d9f20
movsx eax, al
mov dword [rsp + 0x110], eax
mov rax, qword [rsp + 0x140]
mov rax, qword [rax + 0x10]
mov eax, dword [rax]
cmp dword [rsp + 0x110], eax
jne 0x1800d9edd
mov rax, qword [rsp + 0x140]
mov eax, dword [rax + 0x44]
or eax, 8
mov rcx, qword [rsp + 0x140]
mov dword [rcx + 0x44], eax
mov rax, qword [rsp + 0x140]
mov rcx, qword [rsp + 0x118]
mov qword [rax + 0x68], rcx
mov rax, qword [rsp + 0x140]
mov rcx, qword [rsp + 0x48]
movzx ecx, word [rcx + 0x10]
mov word [rax + 0x48], cx
mov rdx, qword [rsp + 0x98]
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rax]
call fcn.18000bb60
xor eax, eax
add rsp, 0x138
ret