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

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rax, qword [r9 + 0x20]
mov r12, rdx
mov r15, qword [rcx]
xor edx, edx
mov rsi, qword [rcx + 0x10]
mov r13, r9
mov r11, rcx
mov qword [rsp + 0x38], r15
mov edi, edx
mov r9, qword [r12 + 0x20]
lea ebp, [rdx + 1]
mov word [rsp + 0x20], dx
lea r14d, [rdx + 2]
mov qword [rsp + 0x40], rsi
mov ebx, edx
mov qword [rsp + 0x30], rax
mov r10d, edx
mov dword [rsp + 0x24], edx
cmp dword [r12 + 0x14], edx
jle 0x140104bbd
movzx ecx, word [r9 + 0x12]
mov eax, 0xffbf
and cx, ax
mov word [r9 + 0x12], cx
mov edx, dword [r13 + 0x44]
cmp dword [r9 + 0x1c], edx
jne 0x140104ba9
test qword [r9 + 0x28], r8
jne 0x140104ba9
movzx eax, word [r9 + 0x14]
test eax, 0xfffff7ff
je 0x140104ba9
test cl, cl
js 0x140104ba9
test byte [r13 + 0x3c], 0x58
je 0x140104b9e
mov rax, qword [r9]
test byte [rax + 4], 3
je 0x140104ba9
cmp dword [rax + 0x34], edx
jne 0x140104ba9
test byte [r13 + 0x3c], 0x18
je 0x140104b9e
test byte [rax + 4], r14b
jne 0x140104ba9
add ebx, ebp
or cx, 0x40
mov word [r9 + 0x12], cx
add r10d, ebp
add r9, 0x38
cmp r10d, dword [r12 + 0x14]
jl 0x140104b4a
mov dword [rsp + 0x24], ebx
xor edx, edx
mov dword [rsp + 0xa8], edx
mov ecx, edx
test rsi, rsi
je 0x140104cf3
movsxd rbp, dword [rsi]
mov r14d, edx
mov r12, rbp
test ebp, ebp
jle 0x140104cb3
mov rdi, qword [rsp + 0x30]
add rsi, 0x18
xor ebp, ebp
mov r15, rdx
mov rbx, qword [rsi - 0x10]
xor ecx, ecx
mov rdx, rbx
call fcn.14016bf48
test eax, eax
jne 0x140104c7e
test byte [rsi], 2
jne 0x140104c96
cmp byte [rbx], 0xa7
jne 0x140104c17
mov eax, dword [r13 + 0x44]
cmp dword [rbx + 0x2c], eax
jmp 0x140104c7c
cmp byte [rbx], 0x71
jne 0x140104c96
mov rcx, qword [rbx + 0x10]
cmp byte [rcx], 0xa7
jne 0x140104c96
mov eax, dword [r13 + 0x44]
cmp dword [rcx + 0x2c], eax
jne 0x140104c96
movzx eax, word [rcx + 0x30]
mov word [rbx + 0x30], ax
cmp word [rcx + 0x30], bp
jl 0x140104c7e
movsx rax, word [rcx + 0x30]
lea rcx, [rax + rax*2]
mov rax, qword [rdi + 8]
lea rcx, [rax + rcx*8]
call fcn.140163608
mov rcx, qword [rbx + 8]
lea rdx, [0x140246780]
test rax, rax
cmovne rdx, rax
test rcx, rcx
jne 0x140104c70
neg rdx
sbb eax, eax
jmp 0x140104c7a
test rdx, rdx
je 0x140104c96
call fcn.14018e138
test eax, eax
jne 0x140104c96
mov eax, 1
add rsi, 0x20
add r14d, eax
add r15, rax
cmp r15, r12
jl 0x140104bee
mov r15, qword [rsp + 0x38]
mov edi, ebp
mov ecx, dword [rsp + 0xa8]
mov ebp, r12d
mov r11, qword [rsp + 0x90]
mov ebx, dword [rsp + 0x24]
cmp r14d, ebp
jne 0x140104ceb
movzx eax, word [r11 + 0x3c]
mov ecx, ebp
mov dword [rsp + 0xa8], ecx
test al, al
jns 0x140104ce1
test dword [r13 + 0x40], 0x4000
jne 0x140104ce1
mov edi, eax
shr edi, 9
and edi, 1
add edi, 2
jmp 0x140104ceb
test al, 0x40
mov eax, 1
cmovne edi, eax
mov r12, qword [rsp + 0x98]
movsxd rbp, ecx
mov rcx, qword [r15]
movsxd rsi, ebx
imul rdx, rsi, 0x1c
add rdx, 0x88
lea rdx, [rdx + rbp*8]
call fcn.140165f18
xor r13d, r13d
mov qword [rsp + 0x90], rax
mov rbx, rax
test rax, rax
jne 0x140104d39
lea rdx, str.out_of_memory
mov rcx, r15
call fcn.140168174
xor eax, eax
jmp 0x140104eda
lea r8, [rax + 0x80]
mov qword [rbx + 0x60], r12
lea r8, [r8 + rsi*8]
mov qword [rbx + 0x68], r15
mov qword [rbx + 8], r8
lea rax, [rsi + rsi*2]
lea r14, [r8 + rax*4]
mov dword [rbx + 0x70], edi
mov qword [rbx + 0x18], r14
lea rax, [r14 + rbp*8]
mov qword [rbx + 0x20], rax
mov r10d, r13d
mov dword [rbx + 0x74], r13d
mov r11d, r13d
mov r9, qword [r12 + 0x20]
mov qword [rsp + 0x98], r14
cmp dword [r12 + 0x14], r13d
jle 0x140104e6b
mov r14d, dword [rsp + 0x20]
mov esi, 0x10
add r8, 4
lea edi, [rsi - 0xf]
test byte [r9 + 0x12], 0x40
je 0x140104e4c
mov eax, dword [r9 + 0x20]
mov dword [r8 - 4], eax
mov eax, 0x3fff
mov dword [r8 + 4], r11d
movzx edx, word [r9 + 0x14]
and dx, ax
cmp dx, di
jne 0x140104e13
cmp word [r9 + 0x12], r13w
jl 0x140104dde
mov ecx, r10d
mov edx, edi
shl edx, cl
mov eax, r13d
cmp r10d, 0x1f
cmovle eax, edx
or dword [rbx + 0x74], eax
mov edx, 2
mov byte [r8], dl
test dl, 0x3c
je 0x140104e45
mov rcx, qword [r9]
mov rcx, qword [rcx + 0x18]
call fcn.14016c9d0
cmp eax, edi
jle 0x140104e45
cmp r10d, esi
jge 0x140104e08
movzx r14d, r14w
bts r14d, r10d
cmp dx, si
jne 0x140104e3b
mov byte [r8], 8
jmp 0x140104e45
cmp dx, 0x40
jne 0x140104e1f
mov al, byte [r9 + 0x17]
jmp 0x140104e36
mov eax, 0x180
test ax, dx
je 0x140104de3
mov eax, 0x100
cmp dx, ax
setne al
add al, 0x47
mov byte [r8], al
jmp 0x140104e45
cmp dx, 4
jne 0x140104e45
mov byte [r8], 0x20
add r10d, edi
add r8, 0xc
add r11d, edi
add r9, 0x38
cmp r11d, dword [r12 + 0x14]
jl 0x140104d9a
mov dword [rsp + 0x20], r14d
mov r14, qword [rsp + 0x98]
movsxd rbp, dword [rsp + 0xa8]
mov esi, r13d
mov dword [rbx], r10d
test rbp, rbp
jle 0x140104ec5
mov rdi, qword [rsp + 0x40]
mov ebx, 1
add rdi, 0x18
mov r15, qword [rdi - 0x10]
xor ecx, ecx
mov rdx, r15
call fcn.14016bf48
test eax, eax
jne 0x140104eb4
movsx eax, word [r15 + 0x30]
add esi, ebx
mov dword [r14], eax
mov al, byte [rdi]
and al, bl
mov byte [r14 + 4], al
add r14, 8
add rdi, 0x20
sub rbp, rbx
jne 0x140104e8c
mov rbx, qword [rsp + 0x90]
mov rax, qword [rsp + 0xb0]
mov ecx, dword [rsp + 0x20]
mov dword [rbx + 0x10], esi
mov word [rax], cx
mov rax, rbx
mov rbx, qword [rsp + 0xa0]
add rsp, 0x50
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret