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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1b8
mov dword [rsp + 0xe8], r9d
mov eax, dword [rsp + 0xe8]
mov r14, rcx
mov rsi, r8
mov qword [rsp + 0x208], rdx
mov word [rsp + 0xb2], ax
mov rax, qword [rcx]
mov rax, qword [rax]
cmp dword [rax + 0x30], 0
mov qword [rsp + 0x48], rax
je 0x14049aea1
mov ebp, dword [rax + 0x18]
jmp 0x14049c153
mov rbx, qword [rcx + 0x10]
mov eax, dword [rbx + 0x38]
mov dword [rsp + 0xb4], eax
and eax, 0x20
cmp eax, 1
sbb eax, eax
and eax, 0x1a7
add eax, 0x18
test byte [r8 + 0x64], 4
je 0x14049aec9
and eax, 0xffffffc3
mov rdi, qword [rsp + 0x48]
mov rdx, qword [r14 + 8]
lea rcx, [rsp + 0x140]
xor ebp, ebp
mov rdi, qword [rdi]
mov qword [rsp + 0x78], rdi
mov edi, dword [rbx + 0x18]
mov word [rsp + 0x8a], di
mov di, word [rbx + 0x1a]
mov word [rsp + 0xee], di
mov edi, dword [rbx + 0x1c]
mov word [rsp + 0xf0], di
mov rdi, qword [rbx + 0x16]
mov qword [rsp + 0x100], rdi
mov di, word [rbx + 0x3e]
mov word [rsp + 0xf2], di
mov rdi, qword [rbx + 0x38]
mov qword [rsp + 0xf8], rdi
mov edi, dword [rbx + 0x3c]
mov word [rsp + 0xa8], di
mov rdi, qword [rbx]
mov qword [rsp + 0xc8], rdi
mov di, word [rbx + 0x16]
mov dword [rsp + 0x20], eax
mov rax, qword [rsp + 0x208]
mov word [rsp + 0xaa], di
movzx edi, word [rsp + 0x8a]
mov qword [rsp + 0x28], rsi
mov r8d, dword [rax + 0x44]
mov r9d, edi
mov dword [rsp + 0x8c], edi
call fcn.14049e7d0
mov word [rbx + 0x12], 0
mov rdi, rax
mov rax, qword [rsi + 0x10]
movsx eax, word [rax]
mov ecx, eax
mov dword [rsp + 0xc4], eax
call fcn.1403d7090
xor ecx, ecx
mov word [rsp + 0xec], ax
movzx eax, word [rsp + 0x8a]
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0xb8], rax
add rax, rax
mov qword [rsp + 0x70], rax
movzx eax, word [rsp + 0xa8]
mov qword [rsp + 0x58], rcx
inc eax
mov dword [rsp + 0x118], eax
movsx eax, word [rsp + 0xec]
mov dword [rsp + 0x11c], eax
test ebp, ebp
jne 0x14049bfcb
test rdi, rdi
je 0x14049bfcb
mov eax, dword [rdi + 0x14]
mov word [rsp + 0x54], ax
cmp ax, 0x100
je 0x14049b007
test byte [rdi + 0x12], 0x80
je 0x14049b034
mov rax, qword [rsi + 8]
mov rcx, qword [rsp + 0x70]
movsx rdx, word [rax + rcx]
mov rax, rdx
test edx, edx
js 0x14049b030
mov rdx, qword [rsi + 0x18]
imul rax, rax, 0x18
add rax, qword [rdx + 8]
test byte [rax + 8], 0xf
je 0x14049b034
jmp 0x14049b043
inc edx
je 0x14049b043
mov rax, qword [rdi + 0x28]
and rax, qword [rbx + 8]
mov qword [rsp + 0x68], rax
je 0x14049b04a
xor ebp, ebp
jmp 0x14049bfb6
test byte [rdi + 0x13], 1
je 0x14049b058
cmp word [rsp + 0x54], 0x10
je 0x14049b043
mov rax, qword [rsp + 0x208]
test byte [rax + 0x3c], 0x58
je 0x14049b075
mov rcx, qword [rdi]
mov rdx, rax
call fcn.1403cc770
test eax, eax
je 0x14049b043
cmp byte [rsi + 0x62], 0
mov al, byte [r14 + 0x2c]
je 0x14049b093
movzx edx, word [rsi + 0x5e]
dec edx
cmp dword [rsp + 0x8c], edx
jne 0x14049b093
or eax, 2
jmp 0x14049b096
or eax, 1
mov byte [r14 + 0x2c], al
mov eax, dword [rsp + 0xb4]
mov ecx, dword [r14 + 0x28]
mov dword [rbx + 0x38], eax
mov ax, word [rsp + 0x8a]
mov dword [rsp + 0xf4], ecx
mov word [rbx + 0x18], ax
mov ax, word [rsp + 0xee]
mov word [rbx + 0x1a], ax
mov eax, dword [rsp + 0xf0]
mov word [rbx + 0x1c], ax
mov eax, dword [rsp + 0xa8]
mov word [rbx + 0x3c], ax
cmp ax, word [rbx + 0x40]
jae 0x14049b126
movzx edx, word [rbx + 0x3c]
mov rcx, qword [rbx + 0x48]
mov r8, qword [rbx + 8]
lea eax, [rdx + 1]
mov word [rbx + 0x3c], ax
not r8
mov qword [rcx + rdx*8], rdi
mov rdx, qword [rsp + 0xc8]
or rdx, qword [rdi + 0x28]
and rdx, r8
mov qword [rbx], rdx
mov edx, dword [rsp + 0x54]
and dx, 1
mov word [rsp + 0x80], dx
jne 0x14049b146
jmp 0x14049b218
mov r8d, dword [rsp + 0x118]
mov rcx, qword [rsp + 0x78]
mov rdx, rbx
call fcn.14049d610
test eax, eax
je 0x14049b0e3
xor ebp, ebp
jmp 0x14049bfcb
mov r8, qword [rdi]
test byte [r8 + 5], 0x10
je 0x14049b185
mov dword [rsp + 0x50], 0x2e
movzx eax, ax
xor edx, edx
xor r10d, r10d
dec eax
cmp eax, edx
jle 0x14049b1ab
mov r9, qword [rcx + rdx*8]
test r9, r9
je 0x14049b180
mov r11d, dword [rsp + 0x50]
cmp qword [r9], r8
cmove r11d, r10d
mov dword [rsp + 0x50], r11d
inc rdx
jmp 0x14049b162
mov rax, qword [r8 + 0x20]
xor edx, edx
mov dword [rsp + 0x50], edx
test rax, rax
je 0x14049b1ab
mov eax, dword [rax]
mov dword [rsp + 0x50], eax
test eax, eax
je 0x14049b1ab
movsxd rcx, eax
call fcn.140462360
cwde
mov dword [rsp + 0x50], eax
cmp byte [rsi + 0x64], 0
jns 0x14049b20f
cmp word [rsp + 0xec], 9
jle 0x14049b20f
mov rax, qword [rsi + 0x10]
mov rcx, qword [rsp + 0x70]
mov r8w, word [rax + rcx]
mov ecx, dword [rsp + 0x50]
call fcn.1403d7090
add r8d, 0xa
sub r8d, dword [rsp + 0xec]
sub r8d, dword [rsp + 0x50]
add r8w, ax
jns 0x14049b20f
cmp word [rsp + 0xb2], 1
jg 0x14049b043
mov rax, qword [rsp + 0x78]
test byte [rax + 0x62], 2
jne 0x14049b043
or dword [rbx + 0x38], 0x100000
or dword [rbx + 0x38], 4
jmp 0x14049b4a5
test byte [rsp + 0x54], 0x82
je 0x14049b297
mov rax, qword [rsi + 8]
mov rcx, qword [rsp + 0x70]
movsx edx, word [rax + rcx]
mov eax, dword [rbx + 0x38]
mov ecx, eax
or ecx, 1
mov dword [rbx + 0x38], ecx
cmp edx, 0xffffffff
je 0x14049b275
test edx, edx
js 0x14049b284
cmp word [rsp + 0xb2], 0
jne 0x14049b284
movzx edx, word [rsi + 0x5e]
mov ecx, edx
dec edx
cmp dword [rsp + 0x8c], edx
jne 0x14049b284
test byte [rsi + 0x64], 8
jne 0x14049b275
dec cx
jne 0x14049b27c
cmp byte [rsi + 0x62], 0
je 0x14049b27c
cmp word [rsp + 0x54], 2
jne 0x14049b27c
or eax, 0x1001
jmp 0x14049b281
or eax, 0x10001
mov dword [rbx + 0x38], eax
cmp byte [rsp + 0x169], 1
jbe 0x14049b2a4
or dword [rbx + 0x38], 0x200000
jmp 0x14049b2a4
test word [rsp + 0x54], 0x100
je 0x14049b2af
or dword [rbx + 0x38], 8
xor eax, eax
mov dword [rsp + 0x50], eax
jmp 0x14049b4a5
mov rax, qword [rsp + 0x208]
mov ebp, 1
mov eax, dword [rax + 0x44]
mov dword [rsp + 0x50], eax
mov rax, qword [rdi]
mov rcx, qword [rax + 0x10]
call fcn.140451fb0
movzx r12d, word [rsi + 0x60]
mov ecx, dword [rsp + 0x8c]
sub r12d, ecx
cmp r12d, eax
cmovle eax, r12d
mov dword [rsp + 0x58], eax
mov rax, qword [rsp + 0xb8]
lea r13, [rax + 1]
cmp dword [rsp + 0x58], ebp
jle 0x14049b337
mov rdx, qword [rdi]
movsxd rax, ebp
shl rax, 5
mov rcx, qword [rdx + 0x10]
mov r11, qword [rcx + 0x20]
mov rcx, qword [rdx + 0x18]
add r11, rax
mov rdx, qword [rcx + 0x20]
mov r15, qword [r11 + 8]
test byte [rcx + 5], 0x10
je 0x14049b32c
add rax, qword [rdx + 0x20]
mov r12, qword [rax + 8]
jmp 0x14049b331
mov r12, qword [rdx + rax + 8]
cmp byte [r15], 0xa7
je 0x14049b34a
mov eax, dword [rbx + 0x38]
test byte [rsp + 0x54], 0x24
jne 0x14049b3e5
jmp 0x14049b44c
mov eax, dword [rsp + 0x50]
cmp eax, dword [r15 + 0x2c]
jne 0x14049b337
mov rax, qword [rsi + 8]
mov r10d, dword [r15 + 0x30]
cmp r10w, word [rax + r13*2]
mov dword [rsp + 0x60], r10d
jne 0x14049b337
mov rax, qword [rsi + 0x38]
mov rcx, qword [rsp + 0xb8]
mov cl, byte [rax + rcx]
cmp byte [rax + r13], cl
jne 0x14049b337
mov rcx, r15
call fcn.14044e080
mov rcx, r12
movsx edx, al
call fcn.140449740
mov r10d, dword [rsp + 0x60]
mov rcx, qword [rsi + 0x18]
mov r9d, eax
movsx edx, r10w
call fcn.140472bc0
cmp r9b, al
jne 0x14049b337
mov rcx, qword [rsp + 0x48]
mov r8, r12
mov rdx, r15
call fcn.1404441f0
test rax, rax
je 0x14049b337
mov rdx, qword [rsi + 0x40]
mov rcx, qword [rax]
mov rdx, qword [rdx + r13*8]
inc r13
call fcn.140472710
test eax, eax
jne 0x14049b337
inc ebp
jmp 0x14049b2f5
or eax, 0x22
mov word [rbx + 0x1a], bp
mov dword [rbx + 0x38], eax
test byte [rdi + 0x13], 1
je 0x14049b47b
movzx r8d, word [rbx + 0x3c]
mov rcx, qword [rsp + 0x78]
lea rax, [rdi + 0x38]
mov rdx, rbx
mov qword [rsp + 0x58], rax
inc r8d
call fcn.14049d610
mov dword [rsp + 0x50], eax
test eax, eax
jne 0x14049b13f
movzx eax, word [rbx + 0x3c]
mov rdx, qword [rbx + 0x48]
mov qword [rsp + 0x60], rdi
lea ecx, [rax + 1]
mov word [rbx + 0x3c], cx
mov rcx, qword [rsp + 0x58]
mov qword [rdx + rax*8], rcx
or dword [rbx + 0x38], 0x10
mov word [rbx + 0x1c], 1
jmp 0x14049b4a5
mov edx, eax
mov word [rbx + 0x1c], bp
or edx, 0x12
mov dword [rbx + 0x38], edx
test al, 0x20
je 0x14049b492
movzx edx, word [rbx + 0x3c]
mov rax, qword [rbx + 0x48]
mov qword [rsp + 0x58], rdi
mov rax, qword [rax + rdx*8 - 0x10]
mov qword [rsp + 0x60], rax
xor eax, eax
mov dword [rsp + 0x50], eax
jmp 0x14049b4a5
xor r13d, r13d
xor r15d, r15d
mov qword [rsp + 0x60], rdi
mov dword [rsp + 0x50], r13d
mov qword [rsp + 0x58], r15
jmp 0x14049b4a5
xor ebp, ebp
xor r12d, r12d
mov qword [rsp + 0x58], rdi
mov dword [rsp + 0x50], ebp
mov qword [rsp + 0x60], r12
mov eax, dword [rbx + 0x18]
test byte [rbx + 0x38], 2
je 0x14049bcdf
mov r12, qword [rbx + 0x20]
movsx edi, word [rbx + 0x16]
mov ebp, dword [r12 + 0x68]
mov dword [rsp + 0x54], edi
test ebp, ebp
jg 0x14049b4d6
mov rdi, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
jmp 0x14049bc13
movzx edi, ax
mov dword [rsp + 0xd8], edi
cmp edi, dword [r12 + 0x6c]
jge 0x14049b4c7
mov rdi, qword [rsp + 0x48]
mov rdi, qword [rdi]
mov qword [rsp + 0x98], rdi
test byte [rdi + 0x61], 8
jne 0x14049b4c7
mov r15d, dword [r14 + 0x28]
cmp dword [rsp + 0xd8], r15d
movzx edi, ax
jne 0x14049b846
mov rdx, qword [r14 + 0x20]
movzx eax, word [rbx + 0x1a]
movzx r10d, word [rbx + 0x1c]
mov qword [rsp + 0x128], rdx
mov dword [rsp + 0x90], eax
test rdx, rdx
je 0x14049b538
mov word [rdx + 0x1c], r15w
test r15d, r15d
jne 0x14049b552
mov rax, qword [r12 + 0x88]
xor r13d, r13d
mov qword [rsp + 0x80], rax
jmp 0x14049b590
lea r9, [rsp + 0x130]
xor r8d, r8d
mov rcx, r12
mov dword [rsp + 0x98], r10d
call fcn.14049a390
mov r13, qword [rsp + 0x130]
mov rax, qword [rsp + 0x138]
mov r10d, dword [rsp + 0x98]
add rax, r13
mov qword [rsp + 0x80], rax
mov rax, qword [r12 + 0x38]
cmp byte [rax + rdi], 0
jne 0x14049b5b9
mov eax, r10d
mov rdi, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
mov r10d, dword [rsp + 0x90]
mov dword [rsp + 0x90], eax
jmp 0x14049b5c3
mov rdi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x58]
test rbp, rbp
je 0x14049b6bd
mov rax, qword [rbp]
mov rcx, qword [rsp + 0x48]
lea r8, [rsp + 0x128]
mov rdx, r12
mov r9, qword [rax + 0x18]
lea rax, [rsp + 0x124]
mov dword [rsp + 0x20], r10d
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0xa0], r9
call fcn.140472470
mov dword [rsp + 0x98], 0xfffffffe
mov r10d, eax
test eax, eax
jne 0x14049b6cb
mov r8d, dword [rsp + 0x124]
test r8d, r8d
je 0x14049b6cb
mov rcx, qword [rsp + 0xa0]
mov dword [rsp + 0xac], eax
mov r11d, 0x18
lea r9, [rsp + 0x130]
call fcn.140451fb0
mov rdx, qword [rsp + 0x128]
mov rcx, r12
cmp r8d, eax
mov eax, 0xc
cmovge r11d, eax
xor r8d, r8d
mov dword [rsp + 0xa0], r11d
call fcn.14049a390
mov r11d, dword [rsp + 0xa0]
xor edx, edx
and r11d, dword [rbp + 0x14]
test r11w, r11w
mov dword [rsp + 0x98], eax
mov r10d, dword [rsp + 0xac]
mov rax, qword [rsp + 0x130]
je 0x14049b6ab
mov rdx, qword [rsp + 0x138]
add rax, rdx
cmp r13, rax
cmovb r13, rax
dec dword [rsp + 0x54]
xor ebp, ebp
jmp 0x14049b6cb
mov dword [rsp + 0x98], 0xfffffffe
xor r10d, r10d
test rdi, rdi
je 0x14049b7e5
mov rax, qword [rdi]
mov rcx, qword [rsp + 0x48]
lea r8, [rsp + 0x128]
mov rdx, r12
mov r9, qword [rax + 0x18]
lea rax, [rsp + 0x124]
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x90]
mov qword [rsp + 0x90], r9
mov dword [rsp + 0x20], eax
call fcn.140472470
mov r10, qword [rsp + 0x128]
test eax, eax
jne 0x14049b7cf
mov r8d, dword [rsp + 0x124]
test r8d, r8d
je 0x14049b7c5
mov rcx, qword [rsp + 0x90]
mov r15d, 0x18
lea r9, [rsp + 0x130]
call fcn.140451fb0
mov rdx, r10
mov rcx, r12
cmp r8d, eax
mov eax, 0xc
mov r8d, 1
cmovge r15d, eax
call fcn.14049a390
and r15d, dword [rdi + 0x14]
mov r8d, eax
mov rax, qword [rsp + 0x130]
test r15w, r15w
je 0x14049b790
mov rdi, qword [rsp + 0x138]
mov qword [rsp + 0x68], rdi
mov rdi, qword [rsp + 0x68]
add rax, rdi
cmp qword [rsp + 0x80], rax
cmovbe rax, qword [rsp + 0x80]
xor edi, edi
dec dword [rsp + 0x54]
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x128]
mov qword [r14 + 0x20], rax
jmp 0x14049b80c
mov qword [r14 + 0x20], r10
or r8d, 0xffffffff
jmp 0x14049b80c
mov qword [r14 + 0x20], r10
mov eax, dword [rsp + 0x54]
test rbp, rbp
jne 0x14049bc37
jmp 0x14049bc25
mov rax, qword [rsp + 0x128]
or r8d, 0xffffffff
mov qword [r14 + 0x20], rax
test r10d, r10d
je 0x14049b80c
mov eax, dword [rsp + 0x54]
test rbp, rbp
jne 0x14049bc37
jmp 0x14049bcb0
mov rcx, qword [rsp + 0x80]
mov eax, 0xa
cmp r13, rcx
jae 0x14049b833
sub rcx, r13
call fcn.140462360
cmp dword [rsp + 0x98], r8d
jne 0x14049b833
sub eax, 0x14
cwde
cmp dword [rsp + 0x54], eax
cmovle eax, dword [rsp + 0x54]
mov dword [rsp + 0x54], eax
jmp 0x14049bc13
cmp qword [r12 + 0x20], 0
je 0x14049b859
mov rax, qword [r12 + 0x20]
mov r13b, byte [rax + rdi]
jmp 0x14049b871
mov rcx, qword [rsp + 0x98]
mov rdx, r12
call fcn.14045ee00
test rax, rax
jne 0x14049b84e
mov r13b, 0x41
mov rax, qword [r12 + 0x40]
mov rcx, qword [rsp + 0x48]
xor r11d, r11d
mov qword [rsp + 0x128], r11
mov rdx, qword [rax + rdi*8]
mov qword [rsp + 0x130], r11
call fcn.140461f20
cmp qword [rsp + 0x60], 0
mov qword [rsp + 0xd0], rax
je 0x14049b8d5
mov rax, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x48]
xor r9d, r9d
xor edi, edi
movzx r8d, r13b
mov rax, qword [rax]
mov rdx, qword [rax + 0x18]
lea rax, [rsp + 0x128]
mov qword [rsp + 0x20], rax
call fcn.140490040
jmp 0x14049b8da
xor eax, eax
or edi, 0xffffffff
cmp qword [rsp + 0x58], 0
je 0x14049b8e6
test eax, eax
je 0x14049b8ec
lea r13d, [rbp + 1]
jmp 0x14049b929
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0x48]
xor r9d, r9d
movzx r8d, r13b
xor r13d, r13d
mov rax, qword [rax]
mov rdx, qword [rax + 0x18]
lea rax, [rsp + 0x130]
mov qword [rsp + 0x20], rax
call fcn.140490040
cmp qword [rsp + 0x130], 0
jne 0x14049b929
mov r13d, dword [r12 + 0x68]
mov rcx, qword [rsp + 0x128]
mov rdx, qword [rsp + 0x130]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0x80], rdx
test rcx, rcx
jne 0x14049b966
test rdx, rdx
jne 0x14049b966
call fcn.140475950
xor ecx, ecx
call fcn.140475950
xor ecx, ecx
jmp 0x14049bbb7
xor r15d, r15d
test eax, eax
jne 0x14049bb78
lea rax, [rsp + 0x124]
mov qword [rsp + 0x108], rax
lea rax, [rsp + 0x120]
mov qword [rsp + 0x110], rax
mov eax, dword [rsp + 0x68]
cmp dword [r12 + 0x68], eax
jle 0x14049bb78
imul rax, qword [rsp + 0x68], 0x28
add rax, qword [r12 + 0x78]
xor r10d, r10d
mov ecx, dword [rax + 8]
mov rax, qword [rax]
mov dword [rsp + 0x120], r10d
mov qword [rsp + 0xa0], rax
movzx eax, byte [rax]
mov dword [rsp + 0xdc], ecx
test al, al
js 0x14049b9e0
mov dword [rsp + 0x124], eax
mov ebp, 1
jmp 0x14049b9f8
mov rdx, qword [rsp + 0x108]
mov rcx, qword [rsp + 0xa0]
call fcn.14045e750
movzx ebp, al
mov eax, dword [rsp + 0x124]
mov dword [rsp + 0xac], eax
cmp eax, ebp
jle 0x14049ba13
cmp dword [rsp + 0xdc], eax
jge 0x14049ba1d
mov ecx, 0x14162
jmp 0x14049babb
xor r9d, r9d
mov eax, dword [rsp + 0xac]
mov dword [rsp + 0xe4], r9d
mov dword [rsp + 0xc0], eax
mov rax, qword [rsp + 0xa0]
movsxd rcx, ebp
add rcx, rax
movzx eax, byte [rcx]
test al, al
js 0x14049ba56
mov dword [rsp + 0x120], eax
mov al, 1
jmp 0x14049ba63
mov rdx, qword [rsp + 0x110]
call fcn.14045e750
movzx eax, al
add ebp, eax
cmp dword [rsp + 0xac], ebp
jge 0x14049ba78
mov ecx, 0x14168
jmp 0x14049babb
mov eax, dword [rsp + 0x120]
mov ecx, eax
mov dword [rsp + 0xe0], eax
call fcn.14047f260
mov ecx, dword [rsp + 0xc0]
inc dword [rsp + 0xe4]
add eax, ecx
mov ecx, dword [rsp + 0xe4]
cmp dword [rsp + 0xd8], ecx
jge 0x14049ba2f
cmp dword [rsp + 0xdc], eax
jge 0x14049baca
mov ecx, 0x1416e
call fcn.140449f10
test eax, eax
jne 0x14049bb78
jmp 0x14049bb19
test r15, r15
jne 0x14049bae8
mov rcx, qword [rsp + 0x98]
call fcn.1404759b0
mov r15, rax
test rax, rax
je 0x14049bb78
movsxd rbp, dword [rsp + 0xc0]
mov rcx, qword [rsp + 0xa0]
mov r8, r15
mov edx, dword [rsp + 0xe0]
add rcx, rbp
call fcn.14047f180
mov rax, qword [rsp + 0x98]
mov al, byte [rax + 0x64]
mov byte [r15 + 0x16], al
cmp qword [rsp + 0x90], 0
je 0x14049bb44
mov r8, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x90]
mov rdx, r15
call fcn.140462920
cmp eax, 0x80000000
adc edi, 0
cmp qword [rsp + 0x80], 0
je 0x14049bb6e
mov r8, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x80]
mov rdx, r15
call fcn.140462920
test eax, eax
js 0x14049bb6e
inc r13d
inc qword [rsp + 0x68]
jmp 0x14049b991
mov r9d, r13d
sub r9d, edi
cmp qword [rsp + 0x60], 0
sete al
cmp qword [rsp + 0x58], 0
sete dl
or al, dl
jne 0x14049bbc1
cmp r9d, 1
jg 0x14049bbc1
mov rcx, qword [rsp + 0x90]
call fcn.140475950
mov rcx, qword [rsp + 0x80]
call fcn.140475950
mov rcx, r15
call fcn.140475950
jmp 0x14049b4c7
movsxd rcx, dword [r12 + 0x68]
call fcn.140462360
test r9d, r9d
movsx r8d, ax
mov eax, 1
cmovg eax, r9d
movsxd rcx, eax
call fcn.140462360
mov rcx, qword [rsp + 0x90]
cwde
sub r8d, eax
sub word [rbx + 0x16], r8w
call fcn.140475950
mov rcx, qword [rsp + 0x80]
call fcn.140475950
mov rcx, r15
call fcn.140475950
jmp 0x14049bea8
mov eax, dword [rsp + 0x54]
test rbp, rbp
jne 0x14049bc37
test rdi, rdi
je 0x14049bcb0
mov edx, dword [rdi + 0x10]
test dx, dx
jg 0x14049bc87
mov eax, dword [rsp + 0x54]
xor ebp, ebp
add eax, edx
jmp 0x14049bcb0
mov edx, dword [rbp + 0x10]
test dx, dx
jg 0x14049bc56
mov eax, dword [rsp + 0x54]
add eax, edx
test rdi, rdi
je 0x14049bcb0
mov edx, dword [rdi + 0x10]
test dx, dx
jg 0x14049bc91
add eax, edx
jmp 0x14049bcb0
test byte [rbp + 0x12], 0x80
je 0x14049bc6f
test rdi, rdi
je 0x14049bcb0
mov edx, dword [rdi + 0x10]
test dx, dx
jg 0x14049bc91
mov eax, dword [rsp + 0x54]
jmp 0x14049bc83
mov eax, dword [rsp + 0x54]
sub eax, 0x14
test rdi, rdi
je 0x14049bcb0
mov edx, dword [rdi + 0x10]
test dx, dx
jg 0x14049bc91
add eax, edx
jmp 0x14049bca6
xor ebp, ebp
test byte [rdi + 0x12], 0x80
je 0x14049bc97
jmp 0x14049bcb0
test byte [rdi + 0x12], 0x80
jne 0x14049bc9f
sub eax, 0x14
test rbp, rbp
je 0x14049bcb0
cmp word [rbp + 0x10], 0
jle 0x14049bcb0
cmp word [rdi + 0x10], 0
jle 0x14049bcb0
sub eax, 0x14
xor ecx, ecx
test rbp, rbp
mov edx, dword [rsp + 0x54]
setne cl
cmp rdi, 1
sbb ecx, 0xffffffff
sub edx, ecx
mov ecx, 0xa
cmp ax, cx
cmovl eax, ecx
cwde
cmp edx, eax
cmovg edx, eax
mov word [rbx + 0x16], dx
jmp 0x14049bea8
lea r12d, [rax + 1]
mov eax, dword [rdi + 0x10]
mov word [rbx + 0x18], r12w
test ax, ax
jg 0x14049bd09
mov rdx, qword [rsi + 8]
mov rcx, qword [rsp + 0x70]
cmp word [rdx + rcx], 0
js 0x14049bd09
add ax, word [rbx + 0x16]
jmp 0x14049bea0
xor r8d, r8d
cmp word [rsp + 0xb2], 0
mov qword [rsp + 0x128], r8
jne 0x14049c111
cmp dword [rsi + 0x68], 0
je 0x14049c111
movzx eax, r12w
mov dword [rsp + 0x90], eax
cmp dword [rsi + 0x6c], eax
jl 0x14049c111
cmp word [rsp + 0x80], 0
je 0x14049bd59
mov rax, qword [rdi]
test byte [rax + 5], 0x10
jne 0x14049c111
mov rax, qword [rsp + 0x78]
test byte [rax + 0x61], 8
jne 0x14049c111
mov rax, qword [rdi]
test word [rsp + 0x54], 0x182
je 0x14049bd9c
mov r8, qword [rax + 0x18]
mov rcx, qword [rsp + 0x48]
lea r9, [rsp + 0x128]
mov rdx, r14
call fcn.14049a0c0
mov ebp, eax
test eax, eax
jne 0x14049be3a
jmp 0x14049be43
mov r15, qword [rax + 0x20]
mov rax, qword [r14 + 0x10]
xor r10d, r10d
lea r9, [rsp + 0x130]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 0x10]
movsx ecx, word [rax]
call fcn.140462490
mov r11d, dword [r14 + 0x28]
mov r13, rax
cmp dword [r15], r10d
jle 0x14049c13a
mov rax, r10
mov rcx, qword [rsp + 0x48]
mov rdx, r14
mov dword [rsp + 0xa0], r11d
shl rax, 5
mov qword [rsp + 0x98], r10
mov r8, qword [r15 + rax + 8]
mov qword [rsp + 0x80], r9
mov qword [rsp + 0x130], r13
call fcn.14049a0c0
mov r10, qword [rsp + 0x98]
mov r11d, dword [rsp + 0xa0]
mov rcx, qword [rsp + 0x130]
add qword [rsp + 0x68], rcx
mov ebp, eax
inc r10
test eax, eax
mov dword [r14 + 0x28], r11d
mov r9, qword [rsp + 0x80]
je 0x14049bdc6
cmp ebp, 0xc
jne 0x14049bfcb
mov rcx, qword [rsp + 0x128]
test rcx, rcx
je 0x14049c111
call fcn.140462360
cmp dword [rsp + 0x90], 1
mov word [rbx + 0x16], ax
mov edx, eax
jne 0x14049be8f
mov rcx, qword [rsi + 0x10]
cwde
add eax, 9
movsx ecx, word [rcx]
cmp eax, ecx
jl 0x14049be8f
mov ax, word [rdi + 0x12]
mov ecx, eax
or ch, 0x40
mov word [rdi + 0x12], cx
test ah, 0x20
je 0x14049be8f
or byte [r14 + 0x2d], 4
mov ax, word [rsp + 0xaa]
cmp dx, ax
jg 0x14049bea0
mov ax, word [rbx + 0x16]
sub eax, dword [rsp + 0x50]
mov word [rbx + 0x16], ax
mov al, byte [rsi + 0x64]
mov r12w, word [rbx + 0x16]
and eax, 3
cmp al, 3
jne 0x14049bebe
lea eax, [r12 + 0x10]
jmp 0x14049bedd
movsx eax, word [rsi + 0x5c]
mov rdi, qword [rsp + 0x208]
imul eax, eax, 0xf
mov rdx, qword [rdi + 0x20]
movsx ecx, word [rdx + 0x3c]
cdq
idiv ecx
lea eax, [r12 + rax + 1]
mov ecx, dword [rsp + 0x11c]
movsx edx, ax
call fcn.1404623c0
mov word [rbx + 0x14], ax
test dword [rbx + 0x38], 0x4000140
jne 0x14049bf0d
lea edx, [r12 + 0x10]
movsx ecx, ax
movsx edx, dx
call fcn.1404623c0
mov word [rbx + 0x14], ax
mov edi, dword [rsp + 0x50]
add di, word [rsp + 0xb2]
mov rdx, rbx
lea eax, [rdi + r12]
add word [rbx + 0x14], di
mov rcx, qword [r14 + 8]
mov word [rbx + 0x16], ax
mov r8d, dword [rsp + 0xc4]
call fcn.14049d480
mov rdx, rbx
mov rcx, r14
call fcn.14049d230
mov ebp, eax
mov eax, dword [rbx + 0x38]
test al, 2
cmovne r12w, word [rsp + 0xaa]
mov word [rbx + 0x16], r12w
test al, 0x10
jne 0x14049bf9f
mov eax, dword [rbx + 0x18]
cmp ax, word [rsi + 0x60]
jae 0x14049bf9f
cmp ax, word [rsi + 0x5e]
jb 0x14049bf78
mov dl, byte [rsi + 0x64]
and edx, 3
cmp dl, 2
je 0x14049bf9f
cmp ax, 3
jbe 0x14049bf88
mov rcx, qword [rsp + 0x48]
call fcn.14046c000
mov rdx, qword [rsp + 0x208]
movsx r9d, di
mov r8, rsi
mov rcx, r14
call fcn.14049ae50
mov ax, word [rsp + 0xaa]
mov word [rbx + 0x16], ax
mov eax, dword [rsp + 0xf4]
mov dword [r14 + 0x28], eax
lea rcx, [rsp + 0x140]
call fcn.14049e8c0
mov rdi, rax
jmp 0x14049afe2
mov rax, qword [rsp + 0xc8]
mov di, word [rsp + 0xf2]
mov qword [rbx], rax
mov rax, qword [rsp + 0x100]
mov qword [rbx + 0x16], rax
mov rax, qword [rsp + 0xf8]
mov qword [rbx + 0x38], rax
cmp word [rsp + 0x8a], di
jne 0x14049c153
mov edx, dword [rsp + 0x8c]
movzx eax, word [rsi + 0x5e]
inc edx
cmp edx, eax
jge 0x14049c153
mov edi, dword [rsp + 0xa8]
cmp word [rsp + 0x8a], di
jne 0x14049c153
mov al, byte [rsi + 0x64]
and eax, 0xffffffc0
cmp al, 0x80
jne 0x14049c153
mov rax, qword [rsp + 0x78]
test byte [rax + 0x61], 0x40
jne 0x14049c153
mov rax, qword [rsi + 0x10]
mov rdi, qword [rsp + 0x70]
cmp word [rax + rdi + 2], 0x29
jle 0x14049c153
movzx r8d, word [rsp + 0xa8]
mov rcx, qword [rsp + 0x78]
mov rdx, rbx
inc r8d
call fcn.14049d610
mov ebp, eax
test eax, eax
jne 0x14049c153
movzx eax, word [rbx + 0x3c]
mov rdx, qword [rbx + 0x48]
mov r8, rsi
inc word [rbx + 0x18]
mov rdi, qword [rsp + 0x70]
lea ecx, [rax + 1]
inc word [rbx + 0x3e]
mov word [rbx + 0x3c], cx
xor ecx, ecx
mov qword [rdx + rax*8], rcx
mov rax, qword [rsi + 0x10]
mov rcx, r14
or dword [rbx + 0x38], 0x8000
mov r9w, word [rax + rdi]
mov ax, word [rax + rdi + 2]
mov edi, dword [rsp + 0xe8]
mov edx, eax
sub edx, r9d
add word [rbx + 0x16], dx
lea r9d, [r9 + rdi + 5]
mov rdx, qword [rsp + 0x208]
sub r9d, eax
movsx r9d, r9w
call fcn.14049ae50
mov ax, word [rsp + 0xaa]
mov word [rbx + 0x16], ax
mov ax, word [rsp + 0x8a]
mov word [rbx + 0x18], ax
mov word [rbx + 0x3e], ax
mov eax, dword [rsp + 0xb4]
mov dword [rbx + 0x38], eax
jmp 0x14049c153
mov rax, qword [rsi + 0x10]
movzx r12d, r12w
mov dx, word [rbx + 0x16]
add dx, word [rax + r12*2]
sub dx, word [rax + r12*2 - 2]
lea eax, [rdx + 0xa]
test word [rsp + 0x54], 0x100
cmove eax, edx
jmp 0x14049bea4
mov rax, qword [rsp + 0x68]
cmp r13, rax
cmova r13, rax
mov qword [rsp + 0x128], r13
jmp 0x14049be43
mov eax, ebp
add rsp, 0x1b8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret