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

Disassembly:
mov qword [rsp + 0x18], r8
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x108
mov r12, qword [rcx]
movsxd r10, edx
lea rax, [rcx + 0x158]
mov r15, qword [r12 + 0x10]
mov qword [rsp + 0xc8], rax
mov rax, qword [r12]
mov qword [rsp + 0xb8], rax
mov rax, qword [rcx + 8]
lea r9, [r10 + r10*4]
add r9, r9
mov r11, rcx
mov rbx, r8
lea rbp, [rcx + r9*8 + 0x340]
add rcx, 0x54
mov qword [rsp + 0xc0], r12
movzx edx, byte [rbp + 0x24]
mov r14, qword [rbp + 0x40]
mov qword [rsp + 0x78], r15
imul rdx, rdx, 0x78
lea rdi, [rdx + rax + 8]
mov qword [rsp + 0xd0], rbp
mov eax, dword [rdi + 0x48]
mov qword [rsp + 0x98], r14
mov edx, eax
mov dword [rsp + 0x40], eax
call fcn.1800540dc
mov ecx, r10d
xor esi, esi
not rax
and rax, rbx
mov qword [rbp + 0x48], rax
mov r13, qword [r11 + 0x28]
mov eax, 1
shr r13, cl
and r13d, eax
test byte [r14 + 0x28], 0x40
mov qword [rsp + 0x80], r13
je 0x180056a40
test byte [r11 + 0x32], 0x20
mov dword [rsp + 0x58], eax
je 0x180056a44
mov dword [rsp + 0x58], esi
mov rcx, r15
call fcn.18001ec9c
mov rcx, r15
mov ebx, eax
mov dword [rsp + 0x168], eax
mov dword [rbp + 0x10], eax
mov dword [rbp + 0xc], eax
call fcn.18001ec9c
mov dword [rsp + 0x88], eax
mov dword [rbp + 0x18], eax
cmp byte [rbp + 0x24], sil
jbe 0x180056a9e
test byte [rdi + 0x3c], 8
je 0x180056a9e
mov eax, 1
xor r8d, r8d
mov rcx, r15
add dword [r12 + 0x54], eax
mov r9d, dword [r12 + 0x54]
lea edx, [rax + 0x18]
mov dword [rbp], r9d
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov ecx, dword [rdi + 0x40]
test cl, 4
je 0x180056b36
mov ebx, dword [rdi + 0x34]
mov eax, dword [rdi + 0x30]
xor r9d, r9d
lea edx, [r9 + 0x14]
mov rcx, r15
mov r8d, ebx
mov dword [rsp + 0x20], eax
call fcn.18001eb5c
mov r9d, dword [rsp + 0x168]
mov r8d, ebx
mov edx, 0x16
mov rcx, r15
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov byte [rbp + 0x25], 0x10
mov dword [rbp + 0x2c], eax
mov ecx, 1
mov r13, qword [rsp + 0x150]
lea r14, [r13 + 0x158]
mov edi, dword [r14 + 0x14]
mov rbx, qword [r14 + 0x20]
cmp edi, esi
jle 0x180057e4a
mov r15d, dword [rsp + 0x88]
test byte [rbx + 0x1c], 6
jne 0x180057e37
mov rax, qword [rbx + 0x30]
test qword [rbp + 0x48], rax
je 0x180057e10
mov byte [r13 + 0x37], cl
jmp 0x180057e37
mov edx, dword [r14 + 0x28]
bt edx, 0xa
jae 0x180056cf2
movzx r13d, word [r14 + 0x2c]
mov eax, 1
mov rcx, r12
add dword [r12 + 0x70], eax
lea eax, [r13 + 2]
mov edx, eax
mov dword [rsp + 0x58], eax
call fcn.180031948
cmp r13d, esi
mov edi, esi
mov r15d, eax
mov dword [rsp + 0x168], eax
mov eax, dword [rbp + 0xc]
mov dword [rsp + 0x158], eax
jle 0x180056bf1
lea ebx, [r15 + 2]
mov eax, 1
mov r15, rsi
mov rcx, qword [r14 + 0x30]
mov rdx, qword [r15 + rcx]
cmp rdx, rsi
je 0x180056bdc
mov rcx, r12
test byte [rdx + 0x1a], al
je 0x180056bc8
mov rax, qword [rsp + 0x80]
mov r9d, edi
mov r8, rbp
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], eax
call fcn.180055f50
mov eax, dword [rbp + 0x10]
mov dword [rsp + 0x158], eax
jmp 0x180056bd7
mov rdx, qword [rdx]
mov r8d, ebx
mov rdx, qword [rdx + 0x18]
call fcn.180030a04
mov eax, 1
add edi, eax
add ebx, eax
add r15, 8
cmp edi, r13d
jl 0x180056b8c
mov r15d, dword [rsp + 0x168]
mov rbx, qword [rsp + 0x78]
mov r8d, dword [r14 + 0x18]
mov edi, 0x19
mov r9d, r15d
mov edx, edi
mov rcx, rbx
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
lea r9d, [r15 + 1]
mov r8d, r13d
mov edx, edi
mov rcx, rbx
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov al, byte [r14 + 0x1c]
mov r9d, dword [rsp + 0x158]
mov r8d, dword [rsp + 0x40]
mov rcx, qword [rsp + 0x78]
mov rbx, qword [r14 + 0x20]
neg al
mov edx, 0xe
sbb edi, edi
mov dword [rsp + 0x20], r15d
and edi, 0xfffffff7
call fcn.18001eb5c
mov r8, rbx
mov rbx, qword [rsp + 0x78]
lea r9d, [rdi - 2]
mov edx, eax
mov rcx, rbx
call fcn.18001f128
cmp r13d, esi
mov byte [r14 + 0x1c], sil
mov r10d, esi
jle 0x180056caf
mov r11d, 1
cmp r10d, 0x10
jge 0x180056caf
movzx eax, word [r14 + 0x1e]
movzx ecx, r10w
shr ax, cl
test r11b, al
je 0x180056ca7
mov rdx, qword [r14 + 0x30]
movsxd rax, r10d
mov rcx, rbp
mov rdx, qword [rdx + rax*8]
call fcn.180055e4c
add r10d, r11d
cmp r10d, r13d
jl 0x180056c7d
mov eax, dword [rsp + 0x40]
mov byte [rbp + 0x25], 0x98
mov edx, r15d
mov dword [rbp + 0x28], eax
mov eax, dword [rbx + 0x3c]
mov ebx, dword [rsp + 0x58]
mov r8d, ebx
mov rcx, r12
mov dword [rbp + 0x2c], eax
call fcn.18002f6fc
cmp ebx, dword [r12 + 0x44]
jle 0x180056ce3
mov dword [r12 + 0x44], ebx
mov dword [r12 + 0x48], r15d
call fcn.18002f74c
mov r15, qword [rsp + 0x78]
jmp 0x180056ae9
mov eax, edx
and eax, 0x100
je 0x180056da2
test dl, 5
je 0x180056da2
mov rax, qword [r14 + 0x30]
mov r14d, 1
xor r9d, r9d
mov rdx, qword [rax]
add dword [r12 + 0x54], r14d
mov ebx, dword [r12 + 0x54]
mov r8, rbp
mov rcx, r12
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], r13d
call fcn.180055f50
mov edi, eax
cmp eax, ebx
je 0x180056d46
mov edx, ebx
mov rcx, r12
call fcn.180031910
mov ebx, dword [rbp + 0x10]
mov r8d, edi
mov edx, 0x26
mov rcx, r15
mov r9d, ebx
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov r9d, ebx
mov ebx, dword [rsp + 0x40]
mov edx, 0x44
mov rcx, r15
mov r8d, ebx
mov dword [rsp + 0x20], edi
call fcn.18001eb5c
mov r8d, r14d
mov edx, edi
mov rcx, r12
call fcn.18002f6fc
mov r9d, edi
or r8d, 0xffffffff
mov edx, ebx
call fcn.18002f620
mov byte [rbp + 0x25], 0x9d
mov rcx, r14
jmp 0x180056aee
cmp eax, esi
je 0x180056fb4
test dl, 2
je 0x180056fb4
mov r8, qword [rsp + 0x98]
mov r13d, 0x9d
mov dword [rsp + 0x50], esi
mov eax, esi
mov r14, rsi
mov r15, rsi
test dl, 0x20
je 0x180056dde
mov rax, qword [r8 + 0x30]
mov r15, qword [rax]
mov eax, 1
test dl, 0x10
je 0x180056dee
movsxd rcx, eax
mov rax, qword [r8 + 0x30]
mov r14, qword [rax + rcx*8]
mov rdi, qword [rsp + 0x80]
cmp edi, esi
je 0x180056e03
mov rax, r15
mov r15, r14
mov r14, rax
cmp r15, rsi
je 0x180056e9b
mov rbx, qword [r15]
lea r8, [rsp + 0x58]
mov rcx, r12
mov rdx, qword [rbx + 0x18]
mov byte [rsp + 0x158], 0x3f
mov byte [rsp + 0x159], 0x3d
mov byte [rsp + 0x15a], 0x3c
mov byte [rsp + 0x15b], 0x3e
call fcn.180030904
movzx ecx, byte [rbx]
mov r9d, dword [rsp + 0x168]
mov r8d, dword [rsp + 0x40]
movzx edx, byte [rsp + rcx + 0x108]
mov rcx, qword [rsp + 0x78]
mov edi, eax
mov dword [rsp + 0x20], eax
call fcn.18001eb5c
mov r8d, 1
mov edx, edi
mov rcx, r12
call fcn.18002f6fc
mov edx, dword [rsp + 0x58]
call fcn.180031910
mov rdx, r15
mov rcx, rbp
call fcn.180055e4c
mov r15, qword [rsp + 0x78]
mov rdi, qword [rsp + 0x80]
jmp 0x180056ec0
mov r15, qword [rsp + 0x78]
mov r8d, dword [rsp + 0x40]
mov eax, edi
neg eax
mov r9d, ebx
mov rcx, r15
sbb edx, edx
mov dword [rsp + 0x20], esi
and edx, 0xfffffffd
add edx, 0x6a
call fcn.18001eb5c
cmp r14, rsi
je 0x180056f1f
mov rbx, qword [r14]
mov eax, 1
mov rcx, r12
add dword [r12 + 0x54], eax
mov eax, dword [r12 + 0x54]
mov rdx, qword [rbx + 0x18]
mov r8d, eax
mov dword [rsp + 0x50], eax
call fcn.180030a04
cmp byte [rbx], 0x52
je 0x180056f05
cmp byte [rbx], 0x50
je 0x180056f05
mov eax, edi
neg eax
sbb r13d, r13d
and r13d, 2
add r13d, 0x50
jmp 0x180056f14
mov eax, edi
neg eax
sbb r13d, r13d
and r13d, 0xfffffffe
add r13d, 0x53
mov rdx, r14
mov rcx, rbp
call fcn.180055e4c
mov ecx, dword [r15 + 0x3c]
neg edi
mov edi, dword [rsp + 0x40]
sbb al, al
mov dword [rbp + 0x28], edi
mov dword [rbp + 0x2c], ecx
add al, 9
mov byte [rbp + 0x25], al
cmp r13d, 0x9d
je 0x180056ae9
mov eax, 1
mov r8d, edi
mov rcx, r15
add dword [r12 + 0x54], eax
mov ebx, dword [r12 + 0x54]
lea edx, [rax + 0x64]
mov r9d, ebx
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov r9d, ebx
or r8d, 0xffffffff
mov edx, edi
mov rcx, r12
call fcn.18002f620
mov r9d, dword [rsp + 0x168]
mov r8d, dword [rsp + 0x50]
mov edx, r13d
mov rcx, r15
mov dword [rsp + 0x20], ebx
call fcn.18001eb5c
mov r11, qword [r15 + 8]
cmp r11, rsi
je 0x180056ae9
movsxd rax, dword [r15 + 0x3c]
lea rcx, [rax + rax*2]
mov byte [r11 + rcx*8 - 0x15], 0x6b
jmp 0x180056ae9
bt edx, 9
jae 0x180057604
mov ecx, dword [rbp + 8]
mov rax, qword [r14 + 0x20]
movzx ebx, word [r14 + 0x18]
mov dword [rsp + 0x48], ecx
mov rcx, qword [rsp + 0x150]
mov r11b, sil
test byte [rcx + 0x32], 1
mov r10, rsi
mov qword [rsp + 0xa0], rsi
mov qword [rsp + 0xb0], rsi
mov r9d, esi
mov byte [rsp + 0x158], sil
mov dword [rsp + 0x44], r11d
mov byte [rsp + 0x168], sil
mov qword [rsp + 0x68], rax
je 0x18005702b
cmp byte [rcx + 0x34], sil
jle 0x18005702b
cmp word [rax + 0x5e], bx
jbe 0x18005702b
mov eax, 1
mov r11b, al
mov r9d, eax
mov dword [rsp + 0x44], r11d
movzx edi, bx
mov r8, rdi
test dl, 0x20
je 0x180057051
mov rax, qword [r14 + 0x30]
mov r10, qword [rax + rdi*8]
mov eax, 1
mov qword [rsp + 0xa0], r10
add r8d, eax
mov r9d, eax
test dl, 0x10
je 0x1800570ad
mov rax, qword [r14 + 0x30]
movsxd rcx, r8d
mov r9d, 1
mov rax, qword [rax + rcx*8]
mov qword [rsp + 0xb0], rax
cmp r10, rsi
jne 0x1800570ad
mov r8, qword [rsp + 0x68]
movzx ecx, bx
mov rax, qword [r8 + 8]
movsx rdx, word [rax + rcx*2]
cmp edx, esi
jl 0x1800570ad
mov rax, qword [r8 + 0x18]
lea rdx, [rdx + rdx*2]
movzx r11d, r11b
mov rcx, qword [rax + 8]
add rdx, rdx
mov rax, r9
cmp byte [rcx + rdx*8 + 0x28], sil
cmove r11d, eax
mov dword [rsp + 0x44], r11d
lea rax, [rsp + 0x90]
mov r8d, r13d
mov rdx, rbp
mov rcx, r12
mov qword [rsp + 0x20], rax
call fcn.180056118
mov r10, qword [rsp + 0x90]
mov r8d, eax
mov dword [rsp + 0x4c], eax
cmp r10, rsi
je 0x1800570ea
movzx ecx, bx
mov dl, byte [rcx + r10]
mov byte [rsp + 0x158], dl
mov eax, dword [rbp + 0x10]
mov dword [rsp + 0x54], eax
mov rax, qword [rsp + 0x68]
cmp bx, word [rax + 0x5e]
jae 0x180057116
mov rax, qword [rax + 0x38]
mov edx, esi
movzx ecx, bx
cmp byte [rcx + rax], sil
sete dl
cmp r13d, edx
je 0x180057121
mov rax, qword [rsp + 0x68]
cmp r13d, esi
je 0x180057153
cmp word [rax + 0x5e], bx
jne 0x180057153
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0xa0]
mov dl, byte [rsp + 0x44]
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0xa0], rax
mov byte [rsp + 0x168], dl
mov byte [rsp + 0x44], sil
jmp 0x180057163
mov rcx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0xa0]
cmp rax, rsi
je 0x180057179
test byte [rax + 0x1a], 0x28
jne 0x180057179
mov dword [rsp + 0x60], esi
mov edx, 1
jmp 0x180057182
mov edx, 1
mov dword [rsp + 0x60], edx
cmp rcx, rsi
je 0x180057191
test byte [rcx + 0x1a], 0x28
mov dword [rsp + 0x50], esi
je 0x180057195
mov dword [rsp + 0x50], edx
cmp rax, rsi
jne 0x1800571a3
mov dword [rsp + 0x70], esi
cmp bx, si
jbe 0x1800571a7
mov dword [rsp + 0x70], edx
mov ecx, edi
mov dword [rsp + 0x5c], ecx
cmp rax, rsi
je 0x180057260
mov rax, qword [rax]
add r8d, edi
mov rcx, r12
mov rax, qword [rax + 0x18]
mov rdx, rax
mov qword [rsp + 0xa8], rax
call fcn.180030a04
mov r9, qword [rsp + 0xa8]
mov rcx, r9
call fcn.18002e4e0
cmp eax, esi
je 0x18005720d
mov edx, dword [rsp + 0x4c]
mov r9d, dword [rsp + 0x54]
mov rcx, r15
lea r8d, [rdi + rdx]
mov edx, 0x4c
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov r9, qword [rsp + 0xa8]
mov r10, qword [rsp + 0x90]
cmp r10, rsi
je 0x180057253
movzx ebx, bx
mov rcx, r9
mov dl, byte [rbx + r10]
call fcn.18002cffc
mov r10, qword [rsp + 0x90]
cmp al, 0x62
jne 0x180057239
mov byte [rbx + r10], al
mov dl, byte [rbx + r10]
mov rcx, qword [rsp + 0xa8]
call fcn.18002e544
cmp eax, esi
je 0x180057253
mov byte [rbx + r10], 0x62
mov ebx, dword [rsp + 0x44]
mov ecx, 1
add ecx, edi
jmp 0x180057298
mov ebx, dword [rsp + 0x44]
cmp bl, sil
je 0x18005729c
lea r9d, [rdi + r8]
xor r8d, r8d
mov rcx, r15
lea edx, [r8 + 0x1c]
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov r10, qword [rsp + 0x90]
mov eax, 1
lea ecx, [rax + rdi]
mov dword [rsp + 0x60], esi
mov dword [rsp + 0x70], eax
mov dword [rsp + 0x5c], ecx
mov edx, dword [rsp + 0x4c]
mov r8d, ecx
movzx eax, bl
mov r9, r10
mov rcx, r12
sub r8d, eax
call fcn.180055ea0
movsxd rax, dword [rsp + 0x60]
movsxd rcx, dword [rsp + 0x70]
mov r9d, dword [rsp + 0x54]
mov r8d, dword [rsp + 0x48]
lea rcx, [rax + rcx*2]
movsxd rdx, r13d
lea rbx, [0x180000000]
lea rax, [rdx + rcx*2]
mov qword [rsp + 0xd8], rdx
mov rcx, r15
movzx edx, byte [rax + rbx + 0x66428]
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x4c]
mov dword [rsp + 0x20], eax
call fcn.18001ec5c
mov rax, qword [rsp + 0xb0]
cmp rax, rsi
je 0x1800573af
mov rax, qword [rax]
mov r8d, 1
mov rcx, r12
mov rbx, qword [rax + 0x18]
mov eax, dword [rsp + 0x4c]
lea edx, [rdi + rax]
call fcn.18002f6fc
mov r8d, edx
mov rdx, rbx
call fcn.180030a04
mov rcx, rbx
call fcn.18002e4e0
cmp eax, esi
je 0x180057364
mov eax, dword [rsp + 0x4c]
mov r9d, dword [rsp + 0x54]
mov edx, 0x4c
lea r8d, [rdi + rax]
mov rcx, r15
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov dl, byte [rsp + 0x158]
mov rcx, rbx
call fcn.18002cffc
cmp al, 0x62
je 0x1800573a6
mov dl, byte [rsp + 0x158]
mov rcx, rbx
call fcn.18002e544
cmp eax, esi
jne 0x1800573a6
mov edx, dword [rsp + 0x4c]
lea r9, [rsp + 0x158]
mov r8d, 1
add edx, edi
mov rcx, r12
call fcn.180055ea0
lea rbx, [0x180000000]
jmp 0x1800573d8
cmp byte [rsp + 0x168], sil
je 0x1800573da
mov eax, dword [rsp + 0x4c]
xor r8d, r8d
mov rcx, r15
lea r9d, [rdi + rax]
lea edx, [r8 + 0x1c]
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov dword [rsp + 0x50], esi
inc edi
mov rdx, qword [rsp + 0x90]
mov rcx, qword [rsp + 0xb8]
call fcn.180005a84
mov r11d, dword [r15 + 0x3c]
mov dword [rbp + 0x2c], r11d
cmp edi, esi
je 0x180057436
movsxd rax, dword [rsp + 0x50]
mov rcx, qword [rsp + 0xd8]
mov r9d, dword [rsp + 0x54]
lea rcx, [rax + rcx*2]
mov eax, dword [rsp + 0x4c]
mov dword [rsp + 0x28], edi
movzx edx, byte [rcx + rbx + 0x6624c]
mov edi, dword [rsp + 0x48]
mov rcx, r15
mov r8d, edi
mov dword [rsp + 0x20], eax
call fcn.18001ec5c
jmp 0x18005743a
mov edi, dword [rsp + 0x48]
mov rdx, qword [rsp + 0xa0]
mov rcx, rbp
call fcn.180055e4c
mov rdx, qword [rsp + 0xb0]
mov rcx, rbp
call fcn.180055e4c
cmp dword [rsp + 0x58], esi
jne 0x1800575bc
mov r8, qword [rsp + 0x68]
mov rbx, qword [r8 + 0x18]
test byte [rbx + 0x48], 0x20
jne 0x1800574c5
mov eax, 1
mov r8d, edi
mov rcx, r15
add dword [r12 + 0x54], eax
mov ebx, dword [r12 + 0x54]
lea edx, [rax + 0x6d]
mov r9d, ebx
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov edi, dword [rsp + 0x40]
mov r9d, ebx
or r8d, 0xffffffff
mov rcx, r12
mov edx, edi
call fcn.18002f620
mov r8d, edi
mov edx, 0x40
mov rcx, r15
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
jmp 0x1800575bc
cmp dword [rsp + 0x40], edi
je 0x1800575bc
mov rbx, qword [rbx + 0x10]
jmp 0x1800574e2
mov eax, dword [rbx + 0x64]
and al, 3
cmp al, 2
je 0x1800574e7
mov rbx, qword [rbx + 0x28]
cmp rbx, rsi
jne 0x1800574d5
movzx edx, word [rbx + 0x5e]
mov rcx, r12
call fcn.180031948
mov edi, esi
mov edx, eax
mov dword [rsp + 0x168], eax
cmp si, word [rbx + 0x5e]
jae 0x180057596
mov r13, qword [rsp + 0x68]
mov ebp, dword [rsp + 0x48]
or r12d, 0xffffffff
mov r14d, eax
movzx r8d, word [r13 + 0x60]
mov edx, esi
cmp r8d, esi
jle 0x180057545
mov rax, qword [rbx + 8]
mov r9, qword [r13 + 8]
movsxd rcx, edi
movzx r10d, word [rax + rcx*2]
movsxd rax, edx
cmp r10w, word [r9 + rax*2]
je 0x180057549
inc edx
cmp edx, r8d
jl 0x180057534
mov dx, r12w
lea eax, [rdi + r14]
movsx r9d, dx
mov r8d, ebp
mov edx, 0x2e
mov rcx, r15
mov dword [rsp + 0x20], eax
call fcn.18001eb5c
movzx eax, word [rbx + 0x5e]
inc edi
cmp edi, eax
jl 0x180057518
mov rbp, qword [rsp + 0xd0]
mov r12, qword [rsp + 0xc0]
mov r14, qword [rsp + 0x98]
mov r13, qword [rsp + 0x80]
mov edx, dword [rsp + 0x168]
movzx eax, word [rbx + 0x5e]
mov r9d, dword [rsp + 0x88]
mov r8d, dword [rsp + 0x40]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edx
mov rcx, r15
mov edx, 0x42
call fcn.18001ec5c
bt dword [r14 + 0x28], 0xc
jae 0x1800575ca
mov byte [rbp + 0x25], 0x9d
jmp 0x1800575d4
neg r13d
sbb al, al
add al, 9
mov byte [rbp + 0x25], al
mov eax, dword [rsp + 0x48]
mov r13, qword [rsp + 0x150]
mov ecx, 1
mov dword [rbp + 0x28], eax
mov al, byte [r14 + 0x2a]
and al, cl
mov byte [rbp + 0x26], al
test byte [r14 + 0x28], 0xf
jne 0x180056af6
mov byte [rbp + 0x27], cl
jmp 0x180056af6
bt edx, 0xd
jae 0x180057dbb
mov eax, dword [r12 + 0x50]
mov rcx, r15
mov qword [rsp + 0x98], rsi
mov dword [rsp + 0x5c], eax
inc eax
mov dword [rsp + 0x168], esi
mov dword [r12 + 0x50], eax
mov eax, 1
mov dword [rsp + 0x54], esi
add dword [r12 + 0x54], eax
mov ebx, dword [r12 + 0x54]
mov dword [rsp + 0x58], ebx
call fcn.18001ec9c
mov rcx, qword [r14 + 0x30]
mov rdx, qword [rdi + 0x20]
mov dword [rsp + 0x60], eax
mov rax, qword [rcx]
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0xd8], rax
mov rax, qword [rsp + 0x150]
mov r14d, 1
mov byte [rbp + 0x25], 0x12
mov dword [rbp + 0x28], ebx
mov dword [rsp + 0x50], esi
mov qword [rsp + 0x68], rsi
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0xe8], rcx
cmp byte [rax + 0x39], r14b
jbe 0x1800577a4
movzx ebx, byte [rax + 0x39]
mov rcx, qword [rsp + 0xb8]
sub ebx, dword [rsp + 0x158]
sub ebx, r14d
mov edx, ebx
imul edx, edx, 0x78
sub edx, 0xffffff80
call fcn.180005d10
mov r13, rax
mov qword [rsp + 0xa8], rax
cmp rax, rsi
jne 0x1800576df
mov rax, qword [rsp + 0x160]
jmp 0x180057fcc
lea eax, [r14 + rbx]
mov r8d, 0x78
mov rdx, rdi
movzx ecx, al
mov dword [r13 + 4], ecx
mov dword [r13], ecx
lea rcx, [r13 + 8]
call fcn.180062a8e
mov rdx, qword [rsp + 0x150]
mov eax, 1
mov r14, qword [rdx + 8]
add r14, 8
cmp ebx, eax
jl 0x180057751
lea rdi, [rbp + 0x74]
sub r13, 0xffffffffffffff80
mov rbp, rax
movzx edx, byte [rdi]
mov r8d, 0x78
mov rcx, r13
imul rdx, rdx, 0x78
add rdx, r14
call fcn.180062a8e
add r13, 0x78
add rdi, 0x50
sub rbx, rbp
jne 0x180057724
mov rbp, qword [rsp + 0xd0]
mov rdx, qword [rsp + 0x80]
mov r14d, 1
mov rax, qword [rsp + 0x150]
or r13d, 0xffffffff
test byte [rax + 0x32], 8
jne 0x180057831
test byte [rdx + 0x48], 0x20
jne 0x1800577b2
add dword [r12 + 0x54], r14d
mov eax, dword [r12 + 0x54]
lea edx, [r13 + 0x1d]
mov r9d, eax
xor r8d, r8d
mov rcx, r15
mov dword [rsp + 0x168], eax
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
jmp 0x180057823
mov rax, qword [rax + 8]
mov qword [rsp + 0xa8], rax
jmp 0x18005775f
mov rdi, qword [rdx + 0x10]
jmp 0x1800577c5
mov eax, dword [rdi + 0x64]
and al, 3
cmp al, 2
je 0x1800577ca
mov rdi, qword [rdi + 0x28]
cmp rdi, rsi
jne 0x1800577b8
mov r14d, dword [r12 + 0x50]
mov edx, 0x38
mov rcx, r15
lea eax, [r14 + 1]
mov r8d, r14d
mov dword [rsp + 0x168], r14d
mov dword [r12 + 0x50], eax
movzx r9d, word [rdi + 0x5e]
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov rbx, qword [r12 + 0x10]
mov rdx, rdi
mov rcx, r12
call fcn.180039d38
mov r9d, 0xfffffffa
mov edx, r13d
mov r8, rax
mov rcx, rbx
call fcn.18001f128
mov r14d, 1
add dword [r12 + 0x54], r14d
mov eax, dword [r12 + 0x54]
mov dword [rsp + 0x54], eax
mov r9d, dword [rsp + 0x58]
xor r8d, r8d
mov rcx, r15
lea edx, [r8 + 0x19]
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov r8, qword [rsp + 0xc8]
cmp dword [r8 + 0x14], r14d
mov dword [rsp + 0x90], eax
jle 0x18005795b
cmp dword [r8 + 0x14], esi
mov edi, esi
jle 0x18005795b
mov r14, qword [rsp + 0xd8]
mov r15, qword [rsp + 0xb8]
mov rbx, rsi
mov rbp, rsi
mov r12d, 1
mov rcx, qword [r8 + 0x20]
movsxd rax, edi
mov rdx, qword [rbx + rcx]
imul rax, rax, 0x38
add rax, rcx
cmp rax, r14
je 0x1800578e4
test byte [rdx + 4], r12b
jne 0x1800578e4
test byte [rbx + rcx + 0x1c], 0x12
mov rax, rcx
jne 0x1800578e4
mov ecx, 0xfff
test word [rbx + rax + 0x1a], cx
je 0x1800578e4
xor r9d, r9d
xor r8d, r8d
mov rcx, r15
call fcn.18002d9fc
mov rdx, rbp
mov rcx, r15
mov r8, rax
call fcn.18002d5a0
mov r8, qword [rsp + 0xc8]
mov rbp, rax
add edi, r12d
add rbx, 0x38
cmp edi, dword [r8 + 0x14]
jl 0x18005788a
mov r12, qword [rsp + 0xc0]
mov r15, qword [rsp + 0x78]
mov qword [rsp + 0x68], rbp
cmp rbp, rsi
mov rbp, qword [rsp + 0xd0]
je 0x180057960
mov rcx, qword [r12]
mov edx, 0x48
mov dword [rsp + 0xb0], esi
call fcn.180005cd8
mov rbx, rax
cmp rax, rsi
je 0x18005793d
mov byte [rax], 0x48
mov word [rax + 0x32], r13w
mov eax, 1
mov dword [rbx + 0x28], eax
mov r9, qword [rsp + 0x68]
mov rcx, qword [r12]
xor r8d, r8d
mov rdx, rbx
call fcn.18002d474
mov rdx, rbx
mov qword [rsp + 0x68], rbx
jmp 0x180057965
mov rdx, rsi
jmp 0x180057965
mov rdx, qword [rsp + 0x68]
mov rax, qword [rsp + 0xe8]
mov ecx, 0xf0
mov r14d, esi
cmp dword [rax + 0x14], esi
mov dword [rsp + 0x44], ecx
mov dword [rsp + 0x48], esi
jle 0x180057cf9
mov r8d, dword [rsp + 0x40]
mov r13, rsi
mov qword [rsp + 0xc0], rsi
mov rax, qword [rax + 0x20]
cmp dword [r13 + rax + 0xc], r8d
je 0x1800579b3
mov r9d, 0x200
test word [r13 + rax + 0x1a], r9w
je 0x180057cce
mov r8, qword [r13 + rax]
mov ebx, esi
cmp rdx, rsi
je 0x1800579d1
mov eax, 1
test byte [r8 + 4], al
jne 0x1800579d1
mov qword [rdx + 0x10], r8
mov r8, rdx
mov eax, dword [rsp + 0x5c]
mov rdx, qword [rsp + 0xa8]
xor r9d, r9d
mov dword [rsp + 0x30], eax
mov word [rsp + 0x28], cx
mov rcx, r12
mov qword [rsp + 0x20], rsi
call fcn.18005aaa0
mov rdi, rax
mov qword [rsp + 0xf0], rax
cmp rax, rsi
je 0x180057cc5
movzx ecx, byte [rbp + 0x24]
mov r9d, dword [rsp + 0x158]
mov rdx, qword [rsp + 0xa8]
lea r8, [rax + 0x340]
mov word [rsp + 0x28], si
mov dword [rsp + 0x20], ecx
mov rcx, r12
call fcn.180056688
mov rax, qword [rsp + 0x150]
test byte [rax + 0x32], 8
jne 0x180057c09
mov rcx, qword [rsp + 0xe8]
mov eax, dword [rcx + 0x14]
mov rcx, qword [rsp + 0x80]
dec eax
cmp dword [rsp + 0x48], eax
mov eax, 0xffffffff
cmove r14d, eax
test byte [rcx + 0x48], 0x20
mov dword [rsp + 0xe0], r14d
jne 0x180057ac0
mov edx, dword [rsp + 0x54]
mov r9d, dword [rsp + 0x40]
mov byte [rsp + 0x28], sil
mov dword [rsp + 0x20], edx
mov rdx, rcx
mov r8d, eax
mov rcx, r12
call fcn.18002f874
mov r8d, dword [rsp + 0x168]
xor r9d, r9d
mov edx, 0x80
mov rcx, r15
mov dword [rsp + 0x28], r14d
mov dword [rsp + 0x20], eax
call fcn.18001ec5c
mov ebx, eax
jmp 0x180057c04
mov rbx, qword [rcx + 0x10]
jmp 0x180057ad3
mov eax, dword [rbx + 0x64]
and al, 3
cmp al, 2
je 0x180057ad8
mov rbx, qword [rbx + 0x28]
cmp rbx, rsi
jne 0x180057ac6
movzx edi, word [rbx + 0x5e]
mov rcx, r12
mov edx, edi
call fcn.180031948
cmp edi, esi
mov r13d, eax
mov dword [rsp + 0x4c], eax
jle 0x180057b51
mov rbp, qword [rsp + 0x80]
mov r14, rdi
mov edi, dword [rsp + 0x40]
mov r15, rsi
mov rcx, qword [rbx + 8]
mov r9d, edi
mov rdx, rbp
movsx r8d, word [rcx + r15*2]
mov rcx, r12
mov byte [rsp + 0x28], sil
mov dword [rsp + 0x20], r13d
call fcn.18002f874
mov eax, 1
add r15, rax
add r13d, eax
cmp r15, r14
jl 0x180057b03
mov rbp, qword [rsp + 0xd0]
mov r15, qword [rsp + 0x78]
mov r13d, dword [rsp + 0x4c]
mov edi, r14d
mov r14d, dword [rsp + 0xe0]
cmp r14d, esi
je 0x180057b7a
mov r8d, dword [rsp + 0x168]
xor r9d, r9d
mov rcx, r15
lea edx, [r9 + 0x43]
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x20], r13d
call fcn.18001ec5c
mov ebx, eax
jmp 0x180057b7c
mov ebx, esi
cmp r14d, esi
jl 0x180057bd5
mov eax, dword [rsp + 0x54]
mov r9d, edi
mov r8d, r13d
mov edx, 0x30
mov rcx, r15
mov dword [rsp + 0x20], eax
call fcn.18001eb5c
mov r9d, dword [rsp + 0x54]
mov r8d, dword [rsp + 0x168]
mov edx, 0x6c
mov rcx, r15
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
cmp r14d, esi
je 0x180057bd5
mov rdx, qword [r15 + 8]
cmp rdx, rsi
je 0x180057bd5
movsxd rax, dword [r15 + 0x3c]
lea rcx, [rax + rax*2]
mov byte [rdx + rcx*8 - 0x15], 0x10
mov r8d, edi
mov edx, r13d
mov rcx, r12
call fcn.18002f6fc
cmp edi, dword [r12 + 0x44]
jle 0x180057bf4
mov dword [r12 + 0x44], edi
mov dword [r12 + 0x48], r13d
mov r13, qword [rsp + 0xc0]
mov rdi, qword [rsp + 0xf0]
mov r14d, dword [rsp + 0x48]
mov r9d, dword [rsp + 0x60]
mov r8d, dword [rsp + 0x58]
mov edx, 0x11
mov rcx, r15
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
cmp ebx, esi
je 0x180057c4b
mov edx, dword [r15 + 0x3c]
cmp edx, ebx
jbe 0x180057c3e
mov eax, ebx
lea rcx, [rax + rax*2]
mov rax, qword [r15 + 8]
mov dword [rax + rcx*8 + 8], edx
mov ecx, dword [r15 + 0x3c]
mov rax, qword [r15 + 0x30]
dec ecx
mov dword [rax + 0x64], ecx
mov eax, dword [rsp + 0x50]
cmp byte [rdi + 0x37], sil
mov rdx, qword [rdi + 0x380]
mov ecx, 1
cmovne eax, ecx
bt dword [rdx + 0x28], 9
mov dword [rsp + 0x50], eax
jae 0x180057cb5
cmp r14d, esi
je 0x180057c80
mov rax, qword [rsp + 0x98]
cmp qword [rdx + 0x20], rax
jne 0x180057cb5
mov rax, qword [rsp + 0x80]
test byte [rax + 0x48], 0x20
je 0x180057c9d
mov rax, qword [rdx + 0x20]
mov ecx, dword [rax + 0x64]
and cl, 3
cmp cl, 2
je 0x180057cb5
mov rbx, qword [rdx + 0x20]
mov eax, 0x1000
or word [rsp + 0x44], ax
mov qword [rsp + 0x98], rbx
jmp 0x180057cbd
mov qword [rsp + 0x98], rsi
mov rcx, rdi
call fcn.18005b458
mov r8d, dword [rsp + 0x40]
mov ecx, dword [rsp + 0x44]
mov rax, qword [rsp + 0xe8]
mov rdx, qword [rsp + 0x68]
inc r14d
add r13, 0x38
cmp r14d, dword [rax + 0x14]
mov dword [rsp + 0x48], r14d
mov qword [rsp + 0xc0], r13
jl 0x180057996
mov rax, qword [rsp + 0x98]
mov qword [rbp + 0x30], rax
cmp rax, rsi
je 0x180057d11
mov eax, dword [rsp + 0x5c]
mov dword [rbp + 8], eax
mov rdx, qword [rsp + 0x68]
mov rbx, qword [rsp + 0xb8]
cmp rdx, rsi
je 0x180057d2f
mov rcx, rbx
mov qword [rdx + 0x10], rsi
call fcn.18002d8c0
mov r8d, dword [r15 + 0x3c]
mov eax, dword [rsp + 0x90]
cmp r8d, eax
jbe 0x180057d4c
lea rcx, [rax + rax*2]
mov rax, qword [r15 + 8]
mov dword [rax + rcx*8 + 4], r8d
mov r9d, dword [rbp + 0xc]
xor r8d, r8d
mov rcx, r15
lea edx, [r8 + 0x10]
mov dword [rsp + 0x20], esi
call fcn.18001eb5c
mov edx, dword [rsp + 0x60]
mov rcx, r15
call fcn.18001ecf8
mov r13, qword [rsp + 0x150]
mov ecx, 1
cmp byte [r13 + 0x39], cl
jbe 0x180057d97
mov rdx, qword [rsp + 0xa8]
mov rcx, rbx
call fcn.180005a84
mov ecx, 1
cmp dword [rsp + 0x50], esi
jne 0x180056af6
mov rdx, qword [rsp + 0xd8]
mov rcx, rbp
call fcn.180055e4c
mov ecx, 1
jmp 0x180056af6
test cl, 8
je 0x180057dc9
mov byte [rbp + 0x25], 0x9d
jmp 0x180056ae9
lea rdx, [0x180000000]
movsxd rcx, r13d
mov r9d, ebx
mov al, byte [rcx + rdx + 0x6625c]
mov dword [rsp + 0x20], esi
mov byte [rbp + 0x25], al
mov eax, dword [rsp + 0x40]
mov dword [rbp + 0x28], eax
movzx edx, byte [rcx + rdx + 0x6640c]
mov r8d, eax
mov rcx, r15
call fcn.18001eb5c
mov ecx, 1
add eax, ecx
mov byte [rbp + 0x27], cl
mov dword [rbp + 0x2c], eax
jmp 0x180056aee
mov rdx, qword [rbx]
cmp dword [rbp], esi
je 0x180057e1d
test byte [rdx + 4], cl
je 0x180057e37
mov r9d, 8
mov r8d, r15d
mov rcx, r12
call fcn.180030fec
or byte [rbx + 0x1c], 4
mov ecx, 1
sub edi, ecx
add rbx, 0x38
cmp edi, esi
jg 0x180056b15
mov r15, qword [rsp + 0x78]
mov r13d, dword [r14 + 0x14]
mov rbx, qword [r14 + 0x20]
cmp r13d, esi
jle 0x180057f4f
mov r15d, dword [rsp + 0x40]
test byte [rbx + 0x1c], 6
jne 0x180057f3a
mov eax, 0x402
cmp word [rbx + 0x1a], ax
jne 0x180057f3a
cmp dword [rbx + 0xc], r15d
jne 0x180057f3a
cmp dword [rbp], esi
jne 0x180057f3a
mov rax, qword [rbx]
mov r9, qword [rsp + 0x160]
mov r8d, dword [rbx + 0x10]
mov edx, r15d
mov rcx, r14
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x150], rax
mov dword [rsp + 0x20], 3
call fcn.18005458c
mov r14, rax
cmp rax, rsi
je 0x180057f2d
test byte [rax + 0x1c], 4
jne 0x180057f2d
mov rcx, qword [rsp + 0xb8]
mov edx, 0x48
call fcn.180005d10
mov rdi, rax
cmp rax, rsi
je 0x180057f2d
mov rdx, qword [r14]
mov rcx, rax
mov r8d, 0x48
call fcn.180062a8e
mov r10, qword [rsp + 0x150]
mov r8d, dword [rsp + 0x88]
mov r11, qword [r10 + 0x10]
mov r9d, 8
mov rdx, rdi
mov rcx, r12
mov qword [rdi + 0x10], r11
call fcn.180030fec
mov rcx, qword [rsp + 0xb8]
mov rdx, rdi
call fcn.180005a84
mov r14, qword [rsp + 0xc8]
mov ecx, 1
sub r13d, ecx
add rbx, 0x38
cmp r13d, esi
jg 0x180057e60
mov r15, qword [rsp + 0x78]
cmp dword [rbp], esi
je 0x180057fc8
mov eax, dword [r15 + 0x3c]
mov r9d, dword [rbp]
mov r8d, ecx
mov edx, 0x19
mov rcx, r15
mov dword [rsp + 0x20], esi
mov dword [rbp + 0x1c], eax
call fcn.18001eb5c
mov rcx, r12
call fcn.18002f960
cmp dword [r14 + 0x14], esi
mov rbx, qword [r14 + 0x20]
jle 0x180057fc8
mov eax, 1
test byte [rbx + 0x1c], 6
jne 0x180057fbc
mov rax, qword [rbx + 0x30]
test qword [rbp + 0x48], rax
jne 0x180057fb7
mov r8d, dword [rsp + 0x88]
mov rdx, qword [rbx]
mov r9d, 8
mov rcx, r12
call fcn.180030fec
or byte [rbx + 0x1c], 4
mov eax, 1
add esi, eax
add rbx, 0x38
cmp esi, dword [r14 + 0x14]
jl 0x180057f8a
mov rax, qword [rbp + 0x48]
add rsp, 0x108
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret