Function at 0x14003e3c3
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, 0xa8
mov r13, rcx
mov dword [rsp + 0x40], r9d
cmp byte [rcx], 4
jne 0x14003e3ec
mov ebx, dword [r13 + 4]
jmp 0x14003e988
mov ebp, r9d
mov esi, r8d
mov r14, rdx
mov rax, qword [r13 + 8]
mov rdi, qword [rax + 8]
test byte [r13 + 1], 0x20
je 0x14003e421
mov edx, dword [r13 + 0x50]
mov rcx, rdi
mov r8, r13
call fcn.140034df3
mov ebx, eax
mov dword [rsp + 0x3c], eax
test eax, eax
jne 0x14003e988
mov rax, qword [r13 + 0x80]
test rax, rax
je 0x14003e46b
mov ecx, esi
and ecx, 2
or ecx, ebp
je 0x14003e51b
test ebp, ebp
jne 0x14003e4ac
mov rcx, r13
call fcn.140035042
mov rax, qword [r13 + 0x30]
cmp rax, qword [r14 + 8]
jne 0x14003e4ac
mov rcx, qword [r14]
lea rdx, [rsp + 0x78]
mov qword [rdx + 0x10], rcx
mov dword [rdx + 0x24], eax
mov dword [rdx + 0x28], 0
mov rcx, r13
jmp 0x14003e498
test byte [r13 + 1], 2
je 0x14003e4a4
mov rax, qword [r14 + 8]
cmp rax, qword [r13 + 0x30]
jne 0x14003e4a4
cmp word [r13 + 0x46], 0
je 0x14003e4ac
mov eax, dword [r14 + 0x28]
add eax, dword [r14 + 0x24]
cmp dword [r13 + 0x40], eax
jne 0x14003e4ac
mov rcx, r13
mov rdx, r14
call fcn.1400414f5
mov ebx, eax
jmp 0x14003e988
test ebp, ebp
je 0x14003e845
mov rax, qword [r13 + 0x88]
mov rbx, qword [rdi + 0x60]
movzx r15d, byte [rax + 0xa]
cmp byte [rax + 2], 0
mov qword [rsp + 0x70], r14
mov dword [rsp + 0x48], esi
mov qword [rsp + 0x50], rax
je 0x14003e4f6
movsxd r12, dword [r14 + 0x24]
movsxd rdi, dword [r14 + 0x28]
add rdi, r12
mov rbp, qword [r14 + 0x10]
cmp edi, 0x7f
ja 0x14003e56b
mov byte [rbx + r15], dil
mov eax, 1
jmp 0x14003e57a
mov rbp, qword [r14]
mov r12, qword [r14 + 8]
cmp r12d, 0x7f
ja 0x14003e597
mov eax, r15d
mov r14, rbx
mov byte [rbx + rax], r12b
mov ecx, 1
jmp 0x14003e5a9
movzx ecx, word [r14 + 0x20]
test cx, cx
je 0x14003e879
lea rdx, [rsp + 0x78]
mov qword [rdx], rax
mov rax, qword [r14 + 0x18]
mov qword [rdx + 8], rax
mov word [rdx + 0x10], cx
xor r9d, r9d
test esi, esi
setne r9b
mov dword [rdx + 0x12], 0
mov byte [rdx + 0x16], 0
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov rcx, r13
xor r8d, r8d
call fcn.14003dcd9
jmp 0x14003e89b
lea rcx, [rbx + r15]
mov rdx, rdi
call fcn.14003d94c
movzx eax, al
mov esi, eax
add rsi, r15
mov rdx, qword [r14 + 8]
mov rcx, rsi
add rcx, rbx
call fcn.14003d94c
mov ecx, eax
add ecx, esi
mov r9, rbx
jmp 0x14003e5b2
movsxd rdx, r12d
mov r14, rbx
lea rcx, [rbx + r15]
call fcn.14003d94c
movzx ecx, al
add ecx, r15d
mov edi, r12d
mov r9, r14
movsxd r15, ecx
add r15, r9
mov r14, qword [rsp + 0x50]
movzx esi, word [r14 + 0xe]
cmp edi, esi
jle 0x14003e6e8
movzx r8d, word [r14 + 0x10]
mov eax, edi
sub eax, r8d
mov rdx, qword [r14 + 0x48]
mov qword [rsp + 0x68], rdx
mov ebx, dword [rdx + 0x34]
add ebx, 0xfffffffc
xor edx, edx
div ebx
mov ebx, edx
add ebx, r8d
cmp ebx, esi
cmovg ebx, r8d
lea eax, [rbx + rcx]
add ecx, ebx
add ecx, 4
mov dword [rsp + 0x44], ecx
cdqe
mov qword [rsp + 0x58], r9
add rax, r9
mov qword [rsp + 0x60], rax
lea rax, [rsp + 0x4c]
mov dword [rax], 0
xor esi, esi
cmp edi, ebx
mov r14d, edi
cmovg r14d, ebx
cmp r12d, r14d
jge 0x14003e640
test r12d, r12d
jle 0x14003e650
mov r8d, r12d
mov rcx, r15
mov rdx, rbp
call fcn.1400eeb30
mov r14d, r12d
jmp 0x14003e65d
movsxd r8, r14d
mov rcx, r15
mov rdx, rbp
call fcn.1400eeb30
jmp 0x14003e65d
movsxd r8, r14d
mov rcx, r15
xor edx, edx
call fcn.1400ef1e0
sub edi, r14d
jle 0x14003e72e
movsxd rax, r14d
add r15, rax
add rbp, rax
sub r12d, r14d
sub ebx, r14d
jne 0x14003e61a
mov qword [rsp + 0x78], 0
mov r9d, dword [rsp + 0x4c]
mov rcx, qword [rsp + 0x68]
lea rdx, [rsp + 0x78]
lea r8, [rsp + 0x4c]
call fcn.1400403a9
test eax, eax
jne 0x14003e9ad
mov eax, dword [rsp + 0x4c]
bswap eax
mov rcx, qword [rsp + 0x60]
mov dword [rcx], eax
test rsi, rsi
je 0x14003e6bc
mov rcx, qword [rsi + 0x70]
call fcn.1400344ad
mov rsi, qword [rsp + 0x78]
mov rax, qword [rsi + 0x50]
mov qword [rsp + 0x60], rax
mov dword [rax], 0
mov r15, qword [rsi + 0x50]
add r15, 4
mov rax, qword [rsp + 0x68]
mov ebx, dword [rax + 0x34]
add ebx, 0xfffffffc
jmp 0x14003e61a
add ecx, edi
cmp ecx, 4
mov eax, 4
cmovg eax, ecx
mov dword [rsp + 0x44], eax
movsxd rbx, r12d
mov rcx, r15
mov rdx, rbp
mov r8, rbx
mov rsi, r9
call fcn.1400eeb30
add r15, rbx
sub edi, ebx
movsxd r8, edi
mov rcx, r15
xor edx, edx
call fcn.1400ef1e0
mov r12d, dword [rsp + 0x48]
mov rbp, r14
mov r14, qword [rsp + 0x70]
jmp 0x14003e750
test rsi, rsi
mov r14, qword [rsp + 0x70]
je 0x14003e741
mov rcx, qword [rsi + 0x70]
call fcn.1400344ad
mov r12d, dword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
mov dword [rsp + 0x3c], 0
movzx edi, word [r13 + 0x56]
cmp dword [rsp + 0x40], 0
je 0x14003e789
jns 0x14003e8ce
cmp word [rbp + 0x16], 0
je 0x14003e8ce
inc edi
mov word [r13 + 0x56], di
movzx edi, di
and byte [r13 + 1], 0xfd
jmp 0x14003e8ce
mov rcx, qword [rbp + 0x70]
call fcn.140029dc0
mov ebx, eax
test eax, eax
jne 0x14003e988
movzx eax, word [rbp + 0x18]
mov rcx, qword [rbp + 0x60]
movzx edx, byte [rcx + rdi*2]
shl edx, 8
movzx ebx, byte [rcx + rdi*2 + 1]
or ebx, edx
and ebx, eax
add rbx, qword [rbp + 0x50]
cmp byte [rbp + 8], 0
jne 0x14003e7c2
mov eax, dword [rbx]
mov dword [rsi], eax
lea r15, [rsp + 0x78]
mov rcx, rbp
mov rdx, rbx
mov r8, r15
call fcn.14003fe99
mov dword [rsp + 0x3c], eax
movzx r8d, word [r15 + 0x16]
cmp dword [rsp + 0x44], r8d
jne 0x14003e8b2
movzx eax, word [rsp + 0x8c]
cmp dword [rsp + 0x88], eax
jne 0x14003e8b2
movsxd r8, dword [rsp + 0x44]
lea rax, [rbx + r8]
cmp rax, qword [rbp + 0x58]
jbe 0x14003e99e
lea rax, [0x140149dd4]
mov qword [rsp + 0x20], rax
lea rdx, str.7a2sf2w27v2t2I7__aO
lea r8, [0x14014a700]
mov ebx, reloc.Cabinet.dll_FCIAddFile
mov ecx, reloc.Cabinet.dll_FCIAddFile
mov r9d, 0x11821
call fcn.14002815a
jmp 0x14003e988
xor r9d, r9d
test esi, esi
setne r9b
mov r8, qword [r14 + 8]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov rcx, r13
xor edx, edx
call fcn.14003dcd9
mov ebx, eax
mov dword [rsp + 0x3c], eax
test eax, eax
jne 0x14003e988
jmp 0x14003e4ac
xor r9d, r9d
test esi, esi
setne r9b
mov rdx, qword [r14]
mov r8, qword [r14 + 8]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
mov rcx, r13
call fcn.14003f8f3
mov ebx, eax
mov dword [rsp + 0x3c], eax
test eax, eax
jne 0x14003e988
mov ebp, dword [rsp + 0x40]
jmp 0x14003e43a
lea rbx, [rsp + 0x3c]
mov rcx, rbp
mov edx, edi
mov r9, rbx
call fcn.14004167b
mov ebx, dword [rbx]
test ebx, ebx
jne 0x14003e988
lea rax, [rsp + 0x3c]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov rcx, rbp
mov edx, edi
mov r8, rsi
mov r9d, dword [rsp + 0x44]
call fcn.14004178f
mov word [r13 + 0x46], 0
cmp byte [rbp + 0xc], 0
je 0x14003e968
and byte [r13 + 1], 0xfd
mov rcx, r13
call fcn.140041a10
mov ebx, eax
mov rax, qword [r13 + 0x88]
mov byte [rax + 0xc], 0
mov byte [r13], 1
test r12b, 2
je 0x14003e988
test ebx, ebx
jne 0x14003e988
mov rcx, r13
call fcn.140034f70
xor ebx, ebx
cmp qword [r13 + 0x80], 0
je 0x14003e97b
mov rcx, qword [r14 + 8]
call fcn.140026322
mov qword [r13 + 0x18], rax
test rax, rax
je 0x14003e96e
mov rdx, qword [r14]
mov r8, qword [r14 + 8]
mov rcx, rax
call fcn.1400eeb30
jmp 0x14003e97b
mov ebx, dword [rsp + 0x3c]
jmp 0x14003e988
mov dword [rsp + 0x3c], 7
mov ebx, 7
mov byte [r13], 3
mov rax, qword [r14 + 8]
mov qword [r13 + 0x48], rax
mov eax, ebx
add rsp, 0xa8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rbx
mov rdx, rsi
call fcn.1400eeb30
xor ebx, ebx
jmp 0x14003e988
mov ebx, eax
test rsi, rsi
je 0x14003e988
mov rcx, qword [rsi + 0x70]
call fcn.1400344ad
jmp 0x14003e988