Function at 0x1402ad2e0
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, 0x78
test rdx, rdx
mov rsi, rcx
mov r13, rdx
je 0x1402ad516
mov ecx, dword [0x140398100]
mov ebp, dword [rdx + 0x18]
test ecx, ecx
jne 0x1402adbe9
mov ecx, 0x200
call qword [0x140398120]
mov qword [rsp + 0x48], rax
mov rdi, rax
test rdi, rdi
mov ebx, 7
je 0x1402ada1a
xor eax, eax
mov ecx, 0x40
mov rbx, rdi
rep stosq qword [rdi], rax
mov dword [rbx], ebp
mov eax, dword [r13 + 0x18]
cmp qword [rsi + 0x128], 0
mov dword [rsi + 0x20], eax
movzx eax, byte [rsi + 0x10]
mov byte [rsi + 0x17], al
mov rax, qword [rsi + 0x60]
mov qword [rsp + 0x38], rax
jne 0x1402ad541
mov rdx, qword [r13 + 8]
lea rbp, [rsp + 0x68]
mov r9, qword [r13]
test rdx, rdx
cmove rdx, qword [rsp + 0x38]
mov qword [rsi + 0x60], r9
mov r12, rdx
cmp r12, r9
jle 0x1402add1a
mov r14, qword [rsi + 0x50]
mov r8d, 4
mov rdx, rbp
mov rdi, qword [rsi + 0x118]
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x10]
test eax, eax
mov ebx, eax
jne 0x1402adc50
mov rdx, qword [rsi + 0x60]
mov rcx, r14
mov rax, qword [r14]
mov r15d, dword [rsp + 0x68]
mov r8d, dword [rsi + 0xc8]
lea r9, [rdx + 4]
mov rdx, rdi
call qword [rax + 0x10]
mov ebx, eax
mov rax, qword [rsi + 0xc8]
test ebx, ebx
jne 0x1402adc57
mov rdx, qword [rsi + 0x60]
test r15d, r15d
lea r11, [rax + rdx + 8]
mov qword [rsi + 0x60], r11
je 0x1402add10
mov r10d, r15d
bswap r10d
cmp r10d, dword [rsi + 0xc0]
je 0x1402add10
cmp dword [rsi + 0x20], r10d
jb 0x1402ad50d
mov rcx, qword [rsp + 0x48]
mov edx, r10d
mov dword [rsp + 0x40], r10d
call fcn.1402d65b0
test eax, eax
jne 0x1402ad50d
mov rax, qword [r14]
lea r9, [r11 - 4]
mov r8d, 4
mov rdx, rbp
mov rcx, r14
call qword [rax + 0x10]
mov r10d, dword [rsp + 0x40]
test eax, eax
mov ebx, eax
jne 0x1402adc50
mov rcx, qword [rsp + 0x48]
mov edx, r10d
mov dword [rsp + 0x40], r10d
call fcn.1402d6360
mov r10d, dword [rsp + 0x40]
test eax, eax
mov ebx, eax
jne 0x1402adc50
cmp r15d, 0x1000000
je 0x1402ade4c
xor r14d, r14d
cmp qword [rsi + 0x128], 0
je 0x1402adfbb
cmp byte [rsi + 0xb], 0
mov edx, 1
je 0x1402ade3c
mov rcx, qword [rsi + 0x48]
mov r11, qword [rcx]
test r11, r11
je 0x1402ad4c2
movzx eax, byte [rsi + 0x15]
sub eax, 1
cmp al, 2
jbe 0x1402ad4c2
test dl, dl
jne 0x1402adf6d
test r14, r14
je 0x1402ad50d
mov r9, qword [r14 + 8]
mov rdx, rdi
mov r8, qword [rsi + 0xc8]
mov rcx, r9
mov qword [rsp + 0x40], r9
call sub.msvcrt.dll_memcpy
mov rcx, r14
call qword [rsi + 0x108]
cmp r15d, 0x1000000
mov r9, qword [rsp + 0x40]
je 0x1402adfd8
mov rcx, r14
call fcn.140316d20
test ebx, ebx
jne 0x1402adc50
mov r9, qword [rsi + 0x60]
jmp 0x1402ad382
mov eax, dword [rcx + 0x24]
mov dword [rcx + 0x20], eax
movzx eax, byte [rcx + 0x10]
mov byte [rcx + 0x17], al
mov rax, qword [rcx + 0x128]
test rax, rax
mov qword [rsp + 0x48], rax
jne 0x1402add63
mov rax, qword [rcx + 0x60]
mov qword [rsp + 0x38], rax
mov qword [rsi + 0x60], 0
xor r9d, r9d
mov rax, qword [rsp + 0x38]
lea r14, [rsp + 0x60]
mov rdi, r13
lea r15, [rsp + 0x68]
mov qword [rsp + 0x58], r14
cmp r9, rax
jge 0x1402ada53
nop dword [rax]
mov r9, qword [rsp + 0x58]
mov r8, rax
xor edx, edx
mov rcx, rsi
lea rax, [rsp + 0x64]
mov dword [rsp + 0x60], 0
mov qword [rsp + 0x20], rax
call fcn.1402b7ad0
mov r13d, dword [rsp + 0x60]
mov ebx, eax
test r13d, r13d
jne 0x1402ad5d0
mov edx, dword [rsi + 0xb8]
add rdx, qword [rsi + 0x68]
cmp rdx, qword [rsi + 0x60]
jne 0x1402ad5d0
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsi + 0xc8]
sub rax, rdx
add rcx, 8
cqo
idiv rcx
mov r13d, eax
mov dword [rsp + 0x60], eax
nop
test ebx, ebx
jne 0x1402adb8b
xor r12d, r12d
mov qword [rsp + 0x40], r15
cmp r13d, r12d
mov r9, qword [rsi + 0x60]
je 0x1402ada40
cmp qword [rsp + 0x38], r9
jle 0x1402ada40
mov r15, qword [rsi + 0x50]
mov r8d, 4
mov rbp, qword [rsi + 0x118]
mov rdx, qword [rsp + 0x40]
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x10]
test eax, eax
mov ebx, eax
jne 0x1402ad7f8
mov rdx, qword [rsi + 0x60]
mov rcx, r15
mov rax, qword [r15]
mov r14d, dword [rsp + 0x68]
mov r8d, dword [rsi + 0xc8]
lea r9, [rdx + 4]
mov rdx, rbp
call qword [rax + 0x10]
test eax, eax
mov ebx, eax
jne 0x1402ad7f8
mov rax, qword [rsi + 0x60]
test r14d, r14d
mov rdx, qword [rsi + 0xc8]
lea r11, [rdx + rax + 8]
mov qword [rsi + 0x60], r11
je 0x1402ada30
mov r10d, r14d
bswap r10d
cmp r10d, dword [rsi + 0xc0]
je 0x1402ada30
cmp dword [rsi + 0x20], r10d
jb 0x1402adabb
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x1402ada70
lea edx, [r10 - 1]
cmp edx, dword [rax]
mov r8, rax
jb 0x1402ad6b2
jmp 0x1402ad700
mov eax, edx
xor edx, edx
div ecx
mov eax, eax
mov r8, qword [r8 + rax*8 + 0x10]
test r8, r8
je 0x1402ad700
mov ecx, dword [r8 + 8]
test ecx, ecx
jne 0x1402ad6a0
cmp dword [r8], 0xf80
lea ecx, [rdx + 1]
ja 0x1402ad6db
jmp 0x1402adaa4
cmp ecx, edx
je 0x1402adabb
lea edx, [rax + 1]
mov eax, edx
shr eax, 2
imul rax, rax, 0x21084211
shr rax, 0x22
imul r9d, eax, 0x7c
mov eax, edx
sub eax, r9d
mov edx, eax
mov edx, dword [r8 + rdx*4 + 0x10]
test edx, edx
jne 0x1402ad6d0
nop
mov rax, qword [r15]
mov dword [rsp + 0x50], r10d
lea r9, [r11 - 4]
mov rcx, r15
mov rdx, qword [rsp + 0x40]
mov r8d, 4
call qword [rax + 0x10]
mov r10d, dword [rsp + 0x50]
test eax, eax
jne 0x1402ada9a
mov rcx, qword [rsp + 0x48]
mov edx, r10d
mov dword [rsp + 0x50], r10d
call fcn.1402d6360
mov r10d, dword [rsp + 0x50]
test eax, eax
jne 0x1402ada9a
cmp r14d, 0x1000000
je 0x1402adac8
cmp qword [rsi + 0x128], 0
je 0x1402adaf0
xor r15d, r15d
cmp byte [rsi + 0xb], 0
mov r8d, 1
jne 0x1402ad77f
mov rax, qword [rsi + 0x68]
cmp qword [rsi + 0x60], rax
setle r8b
mov rcx, qword [rsi + 0x48]
mov rax, qword [rcx]
test rax, rax
je 0x1402ad7a0
movzx edx, byte [rsi + 0x15]
sub edx, 1
cmp dl, 2
jbe 0x1402ad7a0
test r8b, r8b
jne 0x1402adb3e
test r15, r15
je 0x1402adabb
mov r9, qword [r15 + 8]
mov rdx, rbp
mov r8, qword [rsi + 0xc8]
mov rcx, r9
mov qword [rsp + 0x50], r9
call sub.msvcrt.dll_memcpy
mov rcx, r15
call qword [rsi + 0x108]
cmp r14d, 0x1000000
mov r9, qword [rsp + 0x50]
je 0x1402adbce
mov rcx, r15
call fcn.140316d20
add r12d, 1
test ebx, ebx
je 0x1402ad5e0
nop dword [rax + rax]
mov r13, rdi
test r13, r13
je 0x1402ad9c8
mov rax, qword [rsi + 0xc8]
mov r15d, dword [r13 + 0x1c]
mov rcx, qword [rsi + 0x128]
lea rdi, [rax + 4]
mov eax, r15d
imul rdi, rax
test rcx, rcx
je 0x1402adc12
mov eax, dword [rcx + 0x88]
cmp dword [r13 + 0x30], eax
je 0x1402adc40
mov dword [r13 + 0x24], 0
mov eax, dword [rcx + 0x88]
mov dword [r13 + 0x30], eax
xor eax, eax
cmp eax, dword [rcx + 0x58]
jb 0x1402add44
cmp r15d, dword [rsi + 0x3c]
lea r13, [rsp + 0x68]
jae 0x1402ad9ab
mov rbp, qword [rsi + 0x58]
mov r9, rdi
mov r8d, 4
mov rdx, r13
mov r12, qword [rsi + 0x118]
mov rax, qword [rbp]
mov rcx, rbp
call qword [rax + 0x10]
test eax, eax
mov ebx, eax
jne 0x1402ad9c8
mov rax, qword [rbp]
lea r9, [rdi + 4]
mov rdx, r12
mov rcx, rbp
mov r14d, dword [rsp + 0x68]
mov r8d, dword [rsi + 0xc8]
call qword [rax + 0x10]
test eax, eax
mov ebx, eax
jne 0x1402ad9c8
test r14d, r14d
mov rbp, qword [rsi + 0xc8]
je 0x1402ad9c0
mov r10d, r14d
bswap r10d
cmp r10d, dword [rsi + 0xc0]
je 0x1402ad9c0
cmp dword [rsi + 0x20], r10d
jb 0x1402ad998
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x1402ad91e
mov edx, r10d
call fcn.1402d65b0
test eax, eax
jne 0x1402ad998
mov rcx, qword [rsp + 0x48]
mov edx, r10d
mov dword [rsp + 0x40], r10d
call fcn.1402d6360
mov r10d, dword [rsp + 0x40]
test eax, eax
jne 0x1402adde2
cmp r14d, 0x1000000
je 0x1402add23
cmp qword [rsi + 0x128], 0
je 0x1402adc70
mov qword [rsp + 0x68], 0
mov rcx, qword [rsi + 0x48]
mov r11, qword [rcx]
test r11, r11
je 0x1402ad95d
movzx eax, byte [rsi + 0x15]
sub eax, 1
cmp al, 2
ja 0x1402adde9
or byte [rsi + 0x19], 2
mov r9d, 1
mov r8, r13
mov edx, r10d
mov rcx, rsi
call qword [rsi + 0x110]
and byte [rsi + 0x19], 0xfd
test eax, eax
mov ebx, eax
jne 0x1402ad9c8
mov rcx, qword [rsp + 0x68]
call fcn.140316c00
mov rax, qword [rsp + 0x68]
test rax, rax
jne 0x1402adcb5
add r15d, 1
cmp r15d, dword [rsi + 0x3c]
lea rdi, [rdi + rbp + 4]
jb 0x1402ad866
cmp qword [rsp + 0x48], 0
je 0x1402ada0f
xor ebx, ebx
jmp 0x1402ad9d0
mov ebx, 0x65
nop dword [rax]
cmp qword [rsp + 0x48], 0
je 0x1402ada1a
mov rax, qword [rsp + 0x48]
mov eax, dword [rax + 8]
test eax, eax
je 0x1402ada01
mov rax, qword [rsp + 0x48]
lea rdi, [rax + 0x10]
lea rbp, [rax + 0x200]
nop dword [rax]
mov rcx, qword [rdi]
add rdi, 8
call fcn.1402d5fc0
cmp rdi, rbp
jne 0x1402ad9f0
mov rcx, qword [rsp + 0x48]
call fcn.14035ad80
test ebx, ebx
jne 0x1402ada1a
mov rax, qword [rsp + 0x38]
xor ebx, ebx
mov qword [rsi + 0x60], rax
mov eax, ebx
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r13, rdi
mov ebx, 0x65
jmp 0x1402ad7fb
mov rax, qword [rsp + 0x38]
mov r15, qword [rsp + 0x40]
cmp r9, rax
jl 0x1402ad570
test rdi, rdi
mov r13, rdi
je 0x1402ad9ab
xor ebx, ebx
jmp 0x1402ad804
mov rax, qword [r15]
mov dword [rsp + 0x50], r10d
lea r9, [r11 - 4]
mov rcx, r15
mov rdx, qword [rsp + 0x40]
mov r8d, 4
call qword [rax + 0x10]
mov r10d, dword [rsp + 0x50]
test eax, eax
je 0x1402ad749
mov r13, rdi
mov ebx, eax
jmp 0x1402ad7fb
mov eax, edx
and edx, 7
shr eax, 3
movzx eax, byte [r8 + rax + 0x10]
bt eax, edx
jae 0x1402ad700
add r12d, 1
jmp 0x1402ad5e0
movzx edx, byte [rbp + 0x14]
movsx ecx, word [rsi + 0xb2]
cmp ecx, edx
je 0x1402ad756
cmp qword [rsi + 0x128], 0
mov word [rsi + 0xb2], dx
jne 0x1402ad764
mov rax, qword [rsi + 0x120]
xor r8d, r8d
mov edx, r10d
mov dword [rsp + 0x50], r10d
mov rcx, qword [rax + 0x48]
call qword [0x1403981e0]
mov r10d, dword [rsp + 0x50]
test rax, rax
je 0x1402ad764
mov r15, qword [rax + 8]
mov rcx, qword [rsi + 0x120]
cmp qword [r15], 0
je 0x1402ade86
add qword [rcx + 0x18], 1
add qword [r15 + 0x38], 1
jmp 0x1402ad767
mov r8, qword [rsi + 0xc8]
lea r9d, [r10 - 1]
mov dword [rsp + 0x50], r10d
mov rdx, rbp
imul r9, r8
call qword [rax + 0x18]
mov r10d, dword [rsp + 0x50]
cmp dword [rsi + 0x28], r10d
mov ebx, eax
jae 0x1402adb69
mov dword [rsi + 0x28], r10d
mov rcx, qword [rsi + 0x70]
test rcx, rcx
je 0x1402adb7d
mov r8, rbp
mov edx, r10d
call fcn.140232df0
test r15, r15
jne 0x1402ad7a9
jmp 0x1402ad7e7
test rdi, rdi
mov r13, rdi
je 0x1402ad9c8
mov rcx, qword [rsi + 0x128]
mov rax, qword [rsi + 0xc8]
mov r15d, dword [rdi + 0x1c]
test rcx, rcx
je 0x1402adc1a
add rax, 4
mov r8d, r15d
imul rax, r8
mov rdi, rax
mov eax, dword [rcx + 0x88]
cmp dword [r13 + 0x30], eax
jne 0x1402ad83a
jmp 0x1402adc40
mov rax, qword [r9 + 0x18]
mov qword [rsi + 0x88], rax
mov rax, qword [r9 + 0x20]
mov qword [rsi + 0x90], rax
jmp 0x1402ad7df
mov rcx, qword [0x140397da0]
test rcx, rcx
je 0x1402adbfb
call qword [0x140398180]
mov ecx, 0x200
call fcn.140312d00
mov qword [rsp + 0x48], rax
mov rdi, rax
jmp 0x1402ad323
test ebx, ebx
je 0x1402ad857
cmp qword [rsp + 0x48], 0
je 0x1402ada1a
mov rcx, qword [rsp + 0x48]
mov edx, dword [rcx + 8]
test edx, edx
jne 0x1402ad9dc
call fcn.14035ad80
jmp 0x1402ada1a
mov eax, dword [r13 + 0x24]
jmp 0x1402ad84e
mov rax, qword [rsi + 0xc8]
mov rcx, qword [rsi + 0x128]
mov r15d, dword [r13 + 0x1c]
test rcx, rcx
jne 0x1402adbae
jmp 0x1402adc26
mov edx, r10d
mov rcx, rsi
mov dword [rsp + 0x40], r10d
call fcn.140314c00
mov r10d, dword [rsp + 0x40]
test rax, rax
mov qword [rsp + 0x68], rax
je 0x1402ad942
mov rcx, qword [rsi + 0x48]
test byte [rax + 0x34], 8
mov r11, qword [rcx]
jne 0x1402adcb5
test r11, r11
je 0x1402adcb5
movzx edx, byte [rsi + 0x15]
sub edx, 1
cmp dl, 2
ja 0x1402adde9
mov r9, qword [rax + 8]
mov rdx, r12
mov r8, qword [rsi + 0xc8]
mov rcx, r9
mov qword [rsp + 0x40], r9
call sub.msvcrt.dll_memcpy
mov rcx, qword [rsp + 0x68]
call qword [rsi + 0x108]
cmp r14d, 0x1000000
mov r9, qword [rsp + 0x40]
je 0x1402ade6b
mov rcx, qword [rsp + 0x68]
call fcn.140316d20
add r15d, 1
test ebx, ebx
je 0x1402ad99c
jmp 0x1402ad9c8
mov ebx, 0x65
jmp 0x1402adc57
mov r9, qword [rsi + 0x60]
jmp 0x1402ad54c
movzx edx, byte [r12 + 0x14]
movsx ecx, word [rsi + 0xb2]
cmp ecx, edx
je 0x1402ad92b
mov word [rsi + 0xb2], dx
jmp 0x1402ad92b
mov dword [rcx + 0x58], eax
mov eax, dword [r13 + 0x28]
mov dword [rcx + 0x60], eax
mov eax, dword [r13 + 0x2c]
mov dword [rcx + 0x64], eax
call fcn.140379bf0
mov r15d, dword [r13 + 0x1c]
jmp 0x1402ad857
xor ebx, ebx
cmp byte [rax + 0x40], 0
mov ebp, 1
jne 0x1402ade9e
mov rax, qword [rsi + 0x120]
mov rcx, qword [rax]
test rcx, rcx
mov rax, rcx
je 0x1402adda0
nop word cs:[rax + rax]
mov rdx, rax
mov rax, qword [rax + 0x40]
test rax, rax
mov qword [rdx + 0x20], rax
jne 0x1402add90
call fcn.1402b32c0
test rax, rax
mov rdi, rax
je 0x1402ada1a
test bpl, bpl
jne 0x1402addc4
jmp 0x1402ada1a
test eax, eax
jne 0x1402adddb
mov rax, rdi
mov rdi, qword [rdi + 0x20]
mov rcx, rsi
mov edx, dword [rax + 0x30]
call fcn.1402ae3c0
test rdi, rdi
jne 0x1402addc0
mov ebx, eax
jmp 0x1402ada1a
mov ebx, eax
jmp 0x1402ad9d0
mov r8, qword [rsi + 0xc8]
lea r9d, [r10 - 1]
mov dword [rsp + 0x40], r10d
mov rdx, r12
imul r9, r8
call qword [r11 + 0x18]
mov r10d, dword [rsp + 0x40]
cmp dword [rsi + 0x28], r10d
mov ebx, eax
jae 0x1402ade15
mov dword [rsi + 0x28], r10d
mov rcx, qword [rsi + 0x70]
test rcx, rcx
je 0x1402ade29
mov r8, r12
mov edx, r10d
call fcn.140232df0
mov rax, qword [rsp + 0x68]
test rax, rax
je 0x1402adcf7
jmp 0x1402adcb5
mov rax, qword [rsi + 0x68]
cmp qword [rsi + 0x60], rax
setle dl
jmp 0x1402ad4a3
movzx edx, byte [rdi + 0x14]
movsx ecx, word [rsi + 0xb2]
cmp ecx, edx
je 0x1402ad483
mov word [rsi + 0xb2], dx
jmp 0x1402ad483
mov rax, qword [r9 + 0x18]
mov qword [rsi + 0x88], rax
mov rax, qword [r9 + 0x20]
mov qword [rsi + 0x90], rax
jmp 0x1402adced
mov edx, r10d
mov r8, rax
call fcn.1402b31a0
mov r10d, dword [rsp + 0x50]
mov r15, rax
jmp 0x1402ad767
mov rcx, qword [rax + 0x30]
mov r13, rax
mov r12d, dword [rax + 0x58]
mov rax, qword [rcx]
mov r8, qword [rax]
mov qword [r13 + 0x48], r8
mov r8, qword [rax + 8]
mov qword [r13 + 0x50], r8
mov r8, qword [rax + 0x10]
mov qword [r13 + 0x58], r8
mov r8, qword [rax + 0x18]
mov qword [r13 + 0x60], r8
mov r8, qword [rax + 0x20]
mov qword [r13 + 0x68], r8
mov rax, qword [rax + 0x28]
mov qword [r13 + 0x70], rax
mov eax, dword [r13 + 0x58]
lea edi, [rax + 1]
cmp r12d, edi
jae 0x1402adf2a
jmp 0x1402adf55
lea rdx, [rdi*4 + 0x84]
cdqe
and edx, 0x3ffc
add rdx, qword [rcx + rax*8]
mov rax, rdx
mov edx, dword [rax]
mov rcx, rsi
add edi, 1
call fcn.1402ae3c0
test eax, eax
mov ebx, eax
sete bpl
cmp r12d, edi
jb 0x1402adf4d
test bpl, bpl
je 0x1402adf4d
mov rcx, qword [r13 + 0x30]
lea eax, [rdi + 0x1000]
sub rax, 0xfdf
shr rax, 0xc
test eax, eax
jne 0x1402adef0
mov rax, qword [rcx]
mov edx, edi
lea rax, [rax + rdx*4 + 0x84]
jmp 0x1402adf07
mov rax, qword [rsp + 0x48]
mov eax, dword [rax + 0x58]
cmp r12d, eax
je 0x1402add74
mov rcx, qword [rsp + 0x48]
call fcn.140379bf0
jmp 0x1402add74
mov r8, qword [rsi + 0xc8]
lea r9d, [r10 - 1]
mov dword [rsp + 0x40], r10d
mov rdx, rdi
imul r9, r8
call qword [r11 + 0x18]
mov r10d, dword [rsp + 0x40]
cmp dword [rsi + 0x28], r10d
mov ebx, eax
jae 0x1402adf99
mov dword [rsi + 0x28], r10d
mov rcx, qword [rsi + 0x70]
test rcx, rcx
je 0x1402adfad
mov r8, rdi
mov edx, r10d
call fcn.140232df0
test r14, r14
jne 0x1402ad4c7
jmp 0x1402ad505
mov edx, r10d
mov rcx, rsi
mov dword [rsp + 0x40], r10d
call fcn.140314c00
mov r10d, dword [rsp + 0x40]
mov r14, rax
jmp 0x1402ad494
mov rax, qword [r9 + 0x18]
mov qword [rsi + 0x88], rax
mov rax, qword [r9 + 0x20]
mov qword [rsi + 0x90], rax
jmp 0x1402ad4fd