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

Disassembly:
mov dword [rsp + 0x10], edx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x118
mov qword [rsp + 0x100], 0xfffffffffffffffe
mov rbp, r9
mov r13, r8
mov rdi, rcx
mov r10d, edx
mov rax, qword [rcx + 0x28]
mov r15, qword [rax + r10*8]
mov qword [rsp + 0xa0], r15
mov esi, dword [r15 + 0x18]
mov r12, rsi
mov r14d, 1
cmp dword [r15 + 0x10], esi
jae 0x1004c0c4
mov r12d, dword [r15 + 0x10]
mov rsi, r12
xor ecx, ecx
mov eax, r14d
shl eax, cl
cmp eax, dword [rdi + 0x134]
je 0x1004c099
add ecx, r14d
cmp ecx, 0x1f
jbe 0x1004c07f
mov ecx, 0xffffffff
test ecx, ecx
jle 0x1004c0c4
mov edx, r14d
shl edx, cl
sub edx, r14d
mov ecx, dword [r15 + 0x10]
lea r8d, [rcx + rdx]
not edx
mov eax, edx
and r8, rax
cmp r8, rcx
jbe 0x1004c0c4
mov esi, dword [r15 + 0x18]
cmp r8, rsi
cmovbe rsi, r8
mov ecx, 0x80000000
cmp rsi, rcx
jbe 0x1004c0d6
mov eax, r14d
jmp 0x1004ca6e
mov qword [rsp + 0x160], rsi
test r9, r9
je 0x1004c0fe
mov rax, qword [r9]
lea r8, [rsp + 0x160]
xor edx, edx
mov rcx, r9
call qword [rax + 0x18]
test eax, eax
jne 0x1004ca6e
mov rax, qword [r13]
mov edx, dword [r15 + 0x1c]
xor r9d, r9d
xor r8d, r8d
mov rcx, r13
call qword [rax + 0x20]
test eax, eax
jne 0x1004ca6e
cmp rsi, qword [rdi + 0xe0]
je 0x1004c165
mov rcx, qword [rdi + 0xd8]
test rcx, rcx
je 0x1004c13f
call sub.msvcrt.dll_free
mov qword [rdi + 0xd8], 0
mov qword [rdi + 0xe0], 0
test rsi, rsi
je 0x1004c165
mov rcx, rsi
call fcn.10003f74
mov qword [rdi + 0xd8], rax
mov qword [rdi + 0xe0], rsi
xor ebx, ebx
test rsi, rsi
je 0x1004c215
mov qword [rsp + 0x88], rbx
test rbp, rbp
je 0x1004c199
mov rax, qword [rbp]
lea r8, [rsp + 0x88]
xor edx, edx
mov rcx, rbp
call qword [rax + 0x20]
test eax, eax
jne 0x1004ca6e
mov rcx, rsi
sub rcx, rbx
mov eax, 0x400000
cmp rcx, rax
cmovb rax, rcx
mov qword [rsp + 0x160], rax
mov rdx, qword [rdi + 0xd8]
add rdx, rbx
lea r8, [rsp + 0x160]
mov rcx, r13
call fcn.1000c538
test eax, eax
jne 0x1004ca6e
mov rax, qword [rsp + 0x160]
test rax, rax
je 0x1004c1ec
add rbx, rax
cmp rbx, rsi
jb 0x1004c170
jmp 0x1004c1f9
cmp rbx, r12
jae 0x1004c1f9
mov eax, r14d
jmp 0x1004ca6e
cmp rbx, rsi
jae 0x1004c215
mov rcx, qword [rdi + 0xd8]
mov r8, rsi
sub r8, rbx
add rcx, rbx
xor edx, edx
call sub.msvcrt.dll_memset
lea rbx, [rsi + 7]
shr rbx, 3
cmp rbx, qword [rdi + 0x108]
je 0x1004c265
mov rcx, qword [rdi + 0x100]
xor r13d, r13d
cmp rcx, r13
je 0x1004c241
call sub.msvcrt.dll_free
mov qword [rdi + 0x100], r13
mov qword [rdi + 0x108], r13
cmp rbx, r13
je 0x1004c268
mov rcx, rbx
call fcn.10003f74
mov qword [rdi + 0x100], rax
mov qword [rdi + 0x108], rbx
jmp 0x1004c268
xor r13d, r13d
mov r8, rbx
xor edx, edx
mov rcx, qword [rdi + 0x100]
call sub.msvcrt.dll_memset
mov qword [rsp + 0xc8], r13
mov dword [rsp + 0xd0], r13d
mov dword [rsp + 0xd4], r13d
lea r8, [rsp + 0xc8]
xor edx, edx
mov rcx, rdi
call fcn.100499a0
mov ebx, eax
cmp eax, r13d
je 0x1004c2af
jmp 0x1004ca5f
mov byte [rdi + 0xe8], r14b
mov byte [rsp + 0x160], r14b
mov r14, r13
mov dword [rsp + 0x60], r13d
cmp dword [rsp + 0xd0], r13d
jbe 0x1004c8cb
mov r15, qword [rsp + 0xc8]
mov qword [rsp + 0x88], r15
mov edx, dword [r15]
bt edx, 0x1f
jae 0x1004c7f9
mov qword [rsp + 0xb8], r13
mov dword [rsp + 0xc0], r13d
mov dword [rsp + 0xc4], r13d
btr edx, 0x1f
lea r8, [rsp + 0xb8]
mov rcx, rdi
call fcn.100499a0
mov ebx, eax
cmp eax, r13d
jne 0x1004c803
mov dword [rsp + 0x64], r13d
mov rbp, qword [rsp + 0xb8]
cmp dword [rsp + 0xc0], r13d
jbe 0x1004c7c9
mov r12, rbp
mov qword [rsp + 0xe0], rbp
mov edx, dword [r12]
bt edx, 0x1f
jae 0x1004c816
mov qword [rsp + 0xa8], r13
mov dword [rsp + 0xb0], r13d
mov dword [rsp + 0xb4], r13d
btr edx, 0x1f
lea r8, [rsp + 0xa8]
mov rcx, rdi
call fcn.100499a0
mov ebx, eax
cmp eax, r13d
jne 0x1004c829
mov r11d, dword [r15 + 4]
mov dword [rsp + 0x30], r11d
mov eax, dword [r12 + 4]
mov dword [rsp + 0x34], eax
mov dword [rsp + 0x68], r13d
mov r13, qword [rsp + 0xa8]
xor ebx, ebx
cmp dword [rsp + 0xb0], ebx
jbe 0x1004c798
mov r8, r13
mov qword [rsp + 0xd8], r13
cmp dword [rdi + 0x70], 0x800000
jae 0x1004c845
bt dword [r8], 0x1f
jb 0x1004c861
mov rdx, qword [rdi + 0xe0]
mov ecx, dword [r8]
cmp rcx, rdx
jae 0x1004c899
mov rax, rdx
sub rax, rcx
cmp rax, 0x10
jb 0x1004c899
mov r9, qword [rdi + 0xd8]
mov r15d, dword [r8 + 4]
mov dword [rsp + 0x38], r15d
mov r10d, dword [rcx + r9]
mov dword [rsp + 0x40], r10d
mov r12d, dword [rcx + r9 + 4]
mov dword [rsp + 0x3c], r12d
cmp dword [rcx + r9 + 0xc], ebx
jne 0x1004c87d
cmp dword [rdi + 0x70], ebx
je 0x1004c45d
cmp byte [rdi + 0xe8], bl
je 0x1004c45d
mov eax, dword [rdi + 0x70]
lea rcx, [rax + rax*2]
add rcx, rcx
mov rax, qword [rdi + 0x68]
cmp r15d, dword [rax + rcx*8 - 0x28]
je 0x1004c45d
mov byte [rdi + 0xe8], bl
mov dword [rsp + 0x44], ebx
mov eax, r10d
mov rcx, qword [rsp + 0xa0]
sub eax, dword [rcx + 0x14]
mov ebx, eax
cmp rbx, r14
cmova r14, rbx
mov r8, r12
add rax, r12
cmp rax, r14
cmova r14, rax
cmp r10d, dword [rcx + 0x14]
jb 0x1004c5af
cmp rbx, rdx
ja 0x1004c5af
sub rdx, rbx
cmp rdx, r12
jb 0x1004c5af
lea rdx, [r9 + rbx]
cmp r11d, 2
jne 0x1004c553
lea rcx, [rsp + 0x70]
call fcn.10047d80
test al, al
jne 0x1004c4c7
xor eax, eax
jmp 0x1004c54a
mov eax, dword [rsp + 0x74]
test eax, eax
jns 0x1004c4d1
neg eax
mov ecx, 0x4000000
cmp dword [rsp + 0x70], ecx
ja 0x1004c548
cmp eax, ecx
jg 0x1004c548
cmp word [rsp + 0x78], 1
jne 0x1004c548
cmp word [rsp + 0x7a], 0x20
ja 0x1004c548
mov edx, dword [rsp + 0x80]
test edx, edx
jne 0x1004c521
cmp dword [rsp + 0x7c], edx
je 0x1004c505
xor eax, eax
jmp 0x1004c54a
movzx edx, word [rsp + 0x7a]
imul edx, dword [rsp + 0x70]
add edx, 7
shr edx, 3
add edx, 3
shr edx, 2
imul edx, eax
shl edx, 2
lea eax, [r12 + 0xe]
mov ecx, eax
sub ecx, edx
mov word [rsp + 0x48], 0x4d42
mov dword [rsp + 0x4a], eax
mov dword [rsp + 0x4e], 0
mov dword [rsp + 0x52], ecx
mov eax, 0xe
jmp 0x1004c54a
xor eax, eax
mov dword [rsp + 0x44], eax
jmp 0x1004c720
cmp r11d, 3
jne 0x1004c578
lea rcx, [rsp + 0x48]
call fcn.10047db8
mov dword [rsp + 0x44], eax
mov r12d, dword [rsp + 0x3c]
mov r15d, dword [rsp + 0x38]
mov r11d, dword [rsp + 0x30]
jmp 0x1004c5af
cmp r11d, 6
jne 0x1004c5af
cmp byte [rsp + 0x160], 0
je 0x1004c720
mov dword [rsp + 0x20], r12d
mov r9, rdx
mov r8d, r15d
mov edx, dword [rsp + 0x34]
mov rcx, rdi
call fcn.1004b210
mov byte [rsp + 0x160], al
mov r11d, dword [rsp + 0x30]
cmp r11d, 0x10
jne 0x1004c720
mov rcx, qword [rdi + 0xe0]
cmp rbx, rcx
ja 0x1004c758
sub rcx, rbx
mov eax, r12d
cmp rcx, rax
jb 0x1004c758
xor eax, eax
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x80], rax
mov rcx, qword [rdi + 0xd8]
lea r9, [rdi + 0xc8]
add rcx, rbx
lea r8, [rsp + 0x70]
mov edx, r12d
call fcn.1004b89c
test al, al
je 0x1004c716
mov eax, 0xffffffff
mov dword [rsp + 0x94], eax
mov dword [rsp + 0x98], eax
mov eax, dword [rdi + 0x90]
mov dword [rsp + 0x9c], eax
mov eax, dword [rsp + 0x168]
mov dword [rsp + 0x90], eax
lea rcx, [rdi + 0x88]
call fcn.100034ac
mov ecx, 0x18
call fcn.10003f74
mov rbx, rax
test rax, rax
je 0x1004c66f
mov qword [rax], 0
mov qword [rax + 8], 0
jmp 0x1004c671
xor ebx, ebx
mov ecx, dword [rdi + 0x90]
lea eax, [rcx + 1]
mov dword [rdi + 0x90], eax
mov rax, qword [rdi + 0x88]
mov qword [rax + rcx*8], rbx
mov dword [rbx + 0x10], r15d
mov r12, qword [rsp + 0x80]
cmp r12, qword [rbx + 8]
je 0x1004c6cd
mov rcx, qword [rbx]
test rcx, rcx
je 0x1004c6b1
call sub.msvcrt.dll_free
mov qword [rbx], 0
mov qword [rbx + 8], 0
test r12, r12
je 0x1004c6e2
mov rcx, r12
call fcn.10003f74
mov qword [rbx], rax
mov qword [rbx + 8], r12
test r12, r12
je 0x1004c6e2
mov r8, r12
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rbx]
call sub.msvcrt.dll_memcpy
movaps xmm0, xmmword [rsp + 0x90]
movdqa xmmword [rsp + 0xf0], xmm0
lea rcx, [rdi + 0x58]
lea rdx, [rsp + 0xf0]
call fcn.1004aed8
nop
mov rcx, qword [rsp + 0x70]
call sub.msvcrt.dll_free
mov r11d, dword [rsp + 0x30]
jmp 0x1004c758
mov rcx, qword [rsp + 0x70]
call sub.msvcrt.dll_free
mov byte [rsp + 0x5e], 1
lea rcx, [rdi + 0x68]
call fcn.100492bc
mov ecx, dword [rdi + 0x70]
lea eax, [rcx + 1]
mov dword [rdi + 0x70], eax
lea rcx, [rcx + rcx*2]
shl rcx, 4
add rcx, qword [rdi + 0x68]
lea rdx, [rsp + 0x30]
mov r8d, 0x30
call sub.msvcrt.dll_memcpy
mov r11d, dword [rsp + 0x30]
mov eax, dword [rsp + 0x68]
inc eax
mov dword [rsp + 0x68], eax
mov r8, qword [rsp + 0xd8]
add r8, 8
mov qword [rsp + 0xd8], r8
cmp eax, dword [rsp + 0xb0]
mov ebx, 0
jb 0x1004c3cc
mov r12, qword [rsp + 0xe0]
mov r15, qword [rsp + 0x88]
mov rcx, r13
call sub.msvcrt.dll_free
mov eax, dword [rsp + 0x64]
inc eax
mov dword [rsp + 0x64], eax
add r12, 8
mov qword [rsp + 0xe0], r12
cmp eax, dword [rsp + 0xc0]
mov r13d, 0
jb 0x1004c34e
mov rcx, rbp
call sub.msvcrt.dll_free
mov eax, dword [rsp + 0x60]
inc eax
mov dword [rsp + 0x60], eax
add r15, 8
mov qword [rsp + 0x88], r15
cmp eax, dword [rsp + 0xd0]
jb 0x1004c2e4
jmp 0x1004c8b5
mov ebx, 1
jmp 0x1004ca5f
mov rcx, qword [rsp + 0xb8]
call sub.msvcrt.dll_free
nop
jmp 0x1004ca5f
mov rcx, rbp
call sub.msvcrt.dll_free
nop
mov ebx, 1
jmp 0x1004ca5f
mov rcx, qword [rsp + 0xa8]
call sub.msvcrt.dll_free
nop
mov rcx, rbp
call sub.msvcrt.dll_free
nop
jmp 0x1004ca5f
mov rcx, r13
call sub.msvcrt.dll_free
nop
mov rcx, rbp
call sub.msvcrt.dll_free
nop
mov ebx, 1
jmp 0x1004ca5f
mov rcx, r13
call sub.msvcrt.dll_free
nop
mov rcx, rbp
call sub.msvcrt.dll_free
nop
mov ebx, 1
jmp 0x1004ca5f
mov rcx, r13
call sub.msvcrt.dll_free
nop
mov rcx, rbp
call sub.msvcrt.dll_free
nop
mov ebx, 1
jmp 0x1004ca5f
mov rcx, r13
call sub.msvcrt.dll_free
nop
mov rcx, rbp
call sub.msvcrt.dll_free
nop
mov ebx, 1
jmp 0x1004ca5f
cmp byte [rsp + 0x160], r13b
je 0x1004c97f
mov r15, qword [rsp + 0xa0]
cmp dword [rdi + 0x80], r13d
je 0x1004c987
mov ecx, r13d
cmp dword [rdi + 0x70], r13d
jbe 0x1004c8fe
mov rax, r13
mov rdx, qword [rdi + 0x68]
cmp dword [rax + rdx], 6
jne 0x1004c8f3
mov byte [rax + rdx + 0x2e], r13b
inc ecx
add rax, 0x30
cmp ecx, dword [rdi + 0x70]
jb 0x1004c8e4
mov ebx, r13d
cmp dword [rdi + 0x80], r13d
jbe 0x1004c987
mov rbp, r13
mov r15d, dword [rsp + 0x168]
mov rax, qword [rdi + 0x78]
mov rcx, qword [rax + rbp]
cmp qword [rcx + 0x10], r13
je 0x1004c967
mov eax, 0xffffffff
mov dword [rsp + 0x94], eax
mov dword [rsp + 0x9c], eax
mov dword [rsp + 0x98], ebx
mov dword [rsp + 0x90], r15d
movaps xmm0, xmmword [rsp + 0x90]
movdqa xmmword [rsp + 0xf0], xmm0
lea rcx, [rdi + 0x58]
lea rdx, [rsp + 0xf0]
call fcn.1004aed8
inc ebx
add rbp, 8
cmp ebx, dword [rdi + 0x80]
jb 0x1004c915
mov r15, qword [rsp + 0xa0]
jmp 0x1004c987
mov r15, qword [rsp + 0xa0]
mov rcx, qword [rdi + 0x100]
cmp rcx, r13
je 0x1004c99f
call sub.msvcrt.dll_free
mov qword [rdi + 0x100], r13
mov qword [rdi + 0x108], r13
mov eax, dword [r15 + 0x18]
cmp r14, rax
jae 0x1004ca5c
mov rax, r14
cmp r14, rsi
jae 0x1004c9d0
mov rcx, qword [rdi + 0xd8]
cmp byte [rcx + rax], r13b
jne 0x1004c9d0
inc rax
cmp rax, rsi
jb 0x1004c9c2
cmp rax, rsi
cmove r14, rsi
lea rcx, [rsp + 0x30]
call fcn.10001fbc
mov byte [rsp + 0x58], r13b
mov byte [rsp + 0x59], r13b
mov byte [rsp + 0x5a], r13b
mov dword [rsp + 0x50], r13d
mov eax, dword [r15 + 0x1c]
lea ecx, [r14 + rax]
mov dword [rsp + 0x4c], ecx
mov eax, dword [r15 + 0x14]
lea ecx, [r14 + rax]
mov dword [rsp + 0x44], ecx
mov eax, dword [r15 + 0x18]
sub eax, r14d
mov dword [rsp + 0x48], eax
je 0x1004ca51
mov dword [rsp + 0x40], eax
lea rdx, str..rsrc_1
lea rcx, [rsp + 0x30]
call fcn.100020bc
mov dword [rsp + 0x54], r13d
mov byte [rsp + 0x5a], 1
lea rcx, [rdi + 0x28]
call fcn.100034ac
lea rdx, [rsp + 0x30]
lea rcx, [rdi + 0x28]
call fcn.100491d4
nop
mov rcx, qword [rsp + 0x30]
call sub.msvcrt.dll_free
nop
mov ebx, r13d
mov rcx, qword [rsp + 0xc8]
call sub.msvcrt.dll_free
mov eax, ebx
add rsp, 0x118
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret