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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
mov rsi, qword [rcx + 8]
mov al, byte [rcx + 0x10]
cmp al, 2
je 0x140038010
test edx, edx
jne 0x14003805a
cmp al, 1
jne 0x14003805a
test r8, r8
je 0x140038025
mov rax, qword [rsi + 0x18]
mov rax, qword [rax + 0x50]
mov eax, dword [rax + 0x28]
bswap eax
mov dword [r8], eax
xor ebp, ebp
test edx, edx
je 0x140038092
mov rax, qword [rcx]
mov edx, dword [rax + 0x27c]
mov rcx, qword [rsi]
cmp dword [rcx + 0x80], edx
jge 0x140038092
cmp byte [rcx + 0xa], 0
je 0x140038092
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.140038d49
mov qword [rsp + 0x40], r8
mov qword [rsp + 0x38], rcx
mov rax, qword [rcx]
test byte [rax + 0x33], 2
je 0x14003807a
mov rax, qword [rsi]
cmp byte [rax + 0x12], 0
jne 0x14003807a
and byte [rsi + 0x26], 0xfe
movzx eax, word [rsi + 0x26]
mov dword [rsp + 0x30], edx
test edx, edx
je 0x1400380a5
mov ecx, eax
mov ebp, 8
and ecx, 1
je 0x1400380a5
mov eax, ebp
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, eax
and ecx, 0xffef
mov word [rsi + 0x26], cx
cmp dword [rsi + 0x3c], 0
jne 0x1400380be
or eax, 0x10
mov word [rsi + 0x26], ax
lea rax, [rsi + 0x30]
mov qword [rsp + 0x48], rax
xor ebp, ebp
cmp qword [rsi + 0x18], 0
je 0x140038124
cmp dword [rsp + 0x30], 0
je 0x1400384d4
test ebp, ebp
jne 0x1400384d4
mov ebp, 8
test byte [rsi + 0x26], 1
jne 0x1400384f0
mov r13, qword [rsi]
mov eax, dword [r13 + 0x2c]
test eax, eax
je 0x140038394
mov ebp, eax
cmp eax, 0x205
jne 0x1400384f0
mov al, byte [rsi + 0x24]
xor ebp, ebp
test al, al
setne bpl
shl ebp, 9
or ebp, 5
jmp 0x1400384f3
mov rcx, qword [rsi]
call fcn.140038751
test eax, eax
jne 0x14003838d
mov rcx, rsi
mov edx, 1
lea r8, [rsp + 0x50]
xor r9d, r9d
call fcn.1400268cd
test eax, eax
jne 0x14003838d
mov r13, qword [rsp + 0x50]
mov r14, qword [r13 + 0x50]
mov r15d, dword [r14 + 0x1c]
bswap r15d
mov rcx, qword [rsi]
mov ebx, dword [rcx + 0x1c]
test r15d, r15d
je 0x140038176
mov eax, dword [r14 + 0x18]
cmp eax, dword [r14 + 0x5c]
je 0x140038179
mov r15d, ebx
mov rax, qword [rsi + 8]
test byte [rax + 0x33], 2
mov eax, 0
cmovne r15d, eax
test r15d, r15d
je 0x1400382d6
movdqu xmm0, xmmword [r14]
pcmpeqb xmm0, xmmword [0x1402a92e0]
pmovmskb eax, xmm0
mov ebp, 0x1a
cmp eax, 0xffff
jne 0x1400384df
cmp byte [r14 + 0x12], 3
jb 0x1400381bf
or byte [rsi + 0x26], 1
cmp byte [r14 + 0x13], 2
ja 0x1400384df
jne 0x14003820b
test byte [rsi + 0x26], 0x20
jne 0x14003820b
mov dword [rsp + 0x34], 0
lea rdx, [rsp + 0x34]
call fcn.140038bfa
test eax, eax
jne 0x1400384dd
mov rcx, rsi
mov dl, 2
call fcn.140038c7a
cmp dword [rsp + 0x34], 0
jne 0x140038215
mov rcx, qword [r13 + 0x70]
call fcn.14002692d
jmp 0x14003837b
mov rcx, rsi
mov dl, 3
call fcn.140038c7a
movzx eax, word [r14 + 0x15]
xor ax, word [0x1402a9300]
mov cl, byte [r14 + 0x17]
xor cl, byte [0x1402a9302]
movzx ecx, cl
or cx, ax
jne 0x1400384df
movzx eax, byte [r14 + 0x10]
shl eax, 8
movzx ecx, byte [r14 + 0x11]
shl ecx, 0x10
lea edx, [rcx + rax]
add edx, 0xfffeffff
cmp edx, 0xffff0100
jb 0x1400384df
mov edi, ecx
or edi, eax
add eax, ecx
dec eax
and eax, edi
jne 0x1400384df
mov edx, ebx
mov rbx, r13
or byte [rsi + 0x26], 2
movzx r13d, byte [r14 + 0x14]
mov r12d, edi
sub r12d, r13d
cmp edi, dword [rsi + 0x30]
jne 0x140038339
mov rax, qword [rsi + 8]
mov eax, dword [rax + 0x30]
mov ecx, 0x10000001
and eax, ecx
cmp eax, 1
je 0x1400382a5
cmp r15d, edx
ja 0x14003842e
cmp r12d, 0x1e0
mov r13, rbx
jb 0x1400384df
mov dword [rsi + 0x30], edi
mov dword [rsi + 0x34], r12d
mov eax, dword [r14 + 0x34]
bswap eax
test eax, eax
setne byte [rsi + 0x21]
mov eax, dword [r14 + 0x40]
bswap eax
test eax, eax
setne byte [rsi + 0x22]
jmp 0x1400382da
mov r12d, dword [rsi + 0x34]
mov eax, r12d
shl eax, 6
add eax, 0xfffffd00
mov edx, 0x80808081
imul rax, rdx
shr rax, 0x27
add eax, 0xffffffe9
mov word [rsi + 0x28], ax
mov ecx, r12d
shl ecx, 5
add ecx, 0xfffffe80
imul rcx, rdx
shr rcx, 0x27
add ecx, 0xffffffe9
mov word [rsi + 0x2a], cx
add r12d, 0xffffffdd
mov word [rsi + 0x2c], r12w
mov word [rsi + 0x2e], cx
cmp ax, 0x7f
jb 0x14003832c
mov eax, 0x7f
mov byte [rsi + 0x25], al
mov qword [rsi + 0x18], r13
mov dword [rsi + 0x3c], r15d
jmp 0x14003837b
mov rcx, qword [rbx + 0x70]
call fcn.14002692d
mov dword [rsi + 0x34], r12d
mov dword [rsi + 0x30], edi
mov rcx, qword [rsi + 0x60]
test rcx, rcx
je 0x140038367
add rcx, 0xfffffffffffffffc
mov qword [rsi + 0x60], rcx
call fcn.140020f05
mov qword [rsi + 0x60], 0
mov rcx, qword [rsi]
mov rdx, qword [rsp + 0x48]
mov r8d, r13d
call fcn.140023258
test eax, eax
jne 0x14003838d
cmp qword [rsi + 0x18], 0
je 0x140038124
xor ebp, ebp
jmp 0x1400380d0
mov ebp, eax
jmp 0x1400384f0
mov rax, qword [rsp + 0x38]
mov rax, qword [rax]
cmp byte [rax + 0x60], 2
sete byte [r13 + 0x19]
cmp byte [r13 + 0x14], 1
jne 0x1400384ca
mov rdi, qword [r13 + 0x120]
test rdi, rdi
je 0x140038462
cmp byte [r13 + 8], 0
je 0x1400383d1
cmp byte [rdi + 0x3f], 0
je 0x14003853a
cmp byte [rdi + 0x42], 0
jne 0x1400384f0
cmp byte [rdi + 0x3f], 0
je 0x140038589
mov byte [rdi + 0x40], 1
mov rax, qword [rdi + 0x30]
mov rdx, qword [rax]
lea rcx, [rdi + 0x48]
mov r8d, 0x30
call fcn.1402019e0
test eax, eax
je 0x1400384ad
cmp byte [rdi + 0x3f], 0
jne 0x140038425
mov rcx, qword [rdi + 8]
mov rax, qword [rcx]
xor edx, edx
mov r8d, 1
mov r9d, 9
call qword [rax + 0x70]
mov byte [rdi + 0x40], 0
jmp 0x14003810e
lea rax, [0x1402a8134]
mov qword [rsp + 0x20], rax
mov ebp, 0xb
mov ecx, 0xb
lea rdx, [0x1402a9020]
lea r8, [0x1402a9240]
mov r9d, 0x10414
call fcn.14001f1b1
mov r13, rbx
jmp 0x1400384df
mov rcx, r13
mov edx, 2
call fcn.14002ee6e
cmp dword [rsp + 0x30], 2
jl 0x1400384a5
test eax, eax
jne 0x1400384a5
mov rcx, r13
mov edx, 4
call fcn.14002ee6e
cmp eax, 5
jne 0x1400384a5
mov rcx, qword [r13 + 0xe8]
call qword [r13 + 0xe0]
mov ebp, 5
test eax, eax
jne 0x14003847a
jmp 0x1400384f0
test eax, eax
jne 0x140038101
mov byte [r13 + 0x14], 2
mov eax, dword [r13 + 0x1c]
mov dword [r13 + 0x28], eax
mov dword [r13 + 0x24], eax
mov dword [r13 + 0x20], eax
mov qword [r13 + 0x60], 0
mov rcx, rsi
call fcn.14002b57a
mov ebp, eax
test ebp, ebp
jne 0x1400384f0
jmp 0x1400385ae
mov ebp, eax
mov rcx, qword [r13 + 0x70]
call fcn.14002692d
mov qword [rsi + 0x18], 0
mov al, byte [rsi + 0x24]
test al, al
jne 0x140038511
mov rax, qword [rsi + 0x18]
test rax, rax
je 0x140038511
mov qword [rsi + 0x18], 0
mov rcx, qword [rax + 0x70]
call fcn.14002692d
cmp bpl, 5
jne 0x140038092
cmp byte [rsi + 0x24], 0
jne 0x140038092
mov rcx, rsi
call fcn.140038ce4
test eax, eax
jne 0x1400380c9
jmp 0x140038092
mov rcx, r13
mov edx, 4
call fcn.14002ee6e
test eax, eax
jne 0x140038101
mov rdi, qword [r13 + 0x120]
cmp byte [rdi + 0x3f], 0
jne 0x140038579
movsx edx, word [rdi + 0x3c]
add edx, 3
mov rcx, qword [rdi + 8]
mov rax, qword [rcx]
mov r8d, 1
mov r9d, 5
call qword [rax + 0x70]
mov byte [rdi + 0x3f], 1
mov rdi, qword [r13 + 0x120]
jmp 0x1400383d1
mov rcx, qword [rdi + 8]
mov rax, qword [rcx]
xor edx, edx
mov r8d, 1
mov r9d, 0xa
call qword [rax + 0x70]
test eax, eax
jne 0x140038101
jmp 0x1400383e5
mov rcx, qword [rsp + 0x38]
cmp byte [rcx + 0x10], 0
jne 0x1400385bc
inc dword [rsi + 0x38]
mov edx, dword [rsp + 0x30]
cmp edx, 1
mov al, 1
sbb al, 0xff
mov byte [rcx + 0x10], al
cmp al, byte [rsi + 0x24]
mov r8, qword [rsp + 0x40]
jbe 0x1400385d7
mov byte [rsi + 0x24], al
test edx, edx
je 0x140038010
mov rdi, qword [rsi + 0x18]
mov rax, qword [rdi + 0x50]
mov eax, dword [rax + 0x1c]
bswap eax
cmp dword [rsi + 0x3c], eax
je 0x140038010
mov rcx, qword [rdi + 0x70]
call fcn.140023acb
mov ebp, eax
test eax, eax
jne 0x140038092
mov eax, dword [rsi + 0x3c]
mov rcx, qword [rdi + 0x50]
bswap eax
mov dword [rcx + 0x1c], eax
mov rcx, qword [rsp + 0x38]
mov edx, dword [rsp + 0x30]
mov r8, qword [rsp + 0x40]
jmp 0x140038010