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

Disassembly:
mov rax, rsp
mov dword [rax + 0x10], edx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x38
mov edi, dword [rcx + 0x478]
xor r14d, r14d
mov rbx, rcx
lea r11d, [rdi + rdx]
mov dword [rax + 8], edi
mov dword [rsp + 0x90], r11d
cmp dword [rcx + 0x9b8], r14d
je 0x100015387
mov dword [rcx + 0x9b8], r14d
mov dword [rcx + 0x2574], 0x2710
lea edx, [r14 + 1]
cmp dword [rcx + 0x8a4], r14d
je 0x10001537d
mov r8d, edx
call fcn.100016b68
movzx r8d, word [rbx + 0x8a6]
lea edx, [r14 + 0x10]
mov rcx, rbx
call fcn.100016b68
movzx r8d, word [rbx + 0x8a4]
lea edx, [r14 + 0x10]
mov rcx, rbx
jmp 0x100015380
xor r8d, r8d
call fcn.100016b68
jmp 0x1000153b0
mov esi, 0x32
mov r8d, edi
mov edx, edi
mov rcx, rbx
sub r8d, dword [rbx + 8]
sub edx, esi
add r8d, 4
call fcn.100016a30
add esi, 0xffffffff
jne 0x10001538c
mov r11d, dword [rsp + 0x90]
lea r13, [0x100004460]
lea ebp, [rdi + 0x8000]
cmp edi, r11d
jae 0x100015bbb
mov r15d, ebp
and r15d, 0xffff8000
mov dword [rsp + 0x20], r15d
cmp r15d, r11d
ja 0x1000153df
cmp r15d, edi
jae 0x1000153e7
mov r15d, r11d
mov dword [rsp + 0x20], r11d
mov edx, edi
mov rcx, rbx
call fcn.100016758
cmp eax, 2
mov esi, eax
jl 0x10001540a
lea ecx, [rax + rdi]
cmp ecx, r15d
jbe 0x100015454
mov esi, r15d
sub esi, edi
cmp esi, 2
jge 0x100015454
mov rax, qword [rbx]
mov edx, dword [rbx + 0x38]
mov rcx, qword [rbx + 0x48]
mov r11d, dword [rsp + 0x90]
mov r8d, edi
inc edi
mov al, byte [r8 + rax]
inc ebp
mov dword [rsp + 0x80], edi
mov byte [rdx + rcx], al
inc dword [rbx + 0x38]
cmp dword [rbx + 0x38], 0xfff8
jb 0x1000153bd
mov edx, edi
mov rcx, rbx
call fcn.100015d8c
mov r11d, dword [rsp + 0x90]
jmp 0x1000153bd
cmp esi, 0x32
jge 0x100015ac0
lea eax, [rdi + 0xefd]
mov r9d, 2
mov ebp, edi
mov dword [rsp + 0x2c], eax
mov rax, qword [rbx]
lea r12d, [rsi + rdi]
movzx ecx, byte [rax + rbp]
mov rax, qword [rbx + 0x2580]
mov dword [rsp + 0x80], r12d
movzx edx, byte [rcx + rbx + 0x2588]
mov dword [rsp + 0x28], edi
mov r11, r9
mov dword [rax + 0x2c], edx
mov rax, qword [rbx + 0x2580]
mov dword [rax + 0x1c], edi
cmp esi, r9d
jb 0x100015577
lea r8d, [r9 + 0x2e]
lea r10, [rbx + 0x78]
movsxd rdx, dword [r10]
cmp edx, 0x400
jge 0x1000154ca
mov dl, byte [rdx + rbx + 0x47c]
jmp 0x1000154eb
cmp edx, 0x80000
jge 0x1000154e5
mov rax, rdx
sar rax, 9
mov dl, byte [rax + rbx + 0x47c]
add dl, 0x12
jmp 0x1000154eb
sar edx, 0x11
add dl, 0x22
cmp r9d, 9
jae 0x10001551c
movzx eax, dl
lea ecx, [r9 + rax*8 + 0xfe]
movzx eax, dl
movzx eax, byte [rax + r13]
movzx ecx, byte [rcx + rbx + 0x2588]
add ecx, eax
mov rax, qword [rbx + 0x2580]
mov dword [rax + r8 + 0x14], ecx
jmp 0x100015546
movzx eax, byte [r11 + rbx + 0x283c]
movzx ecx, dl
movzx edx, byte [rbx + rcx*8 + 0x268f]
add edx, eax
movzx eax, byte [r13 + rcx]
add edx, eax
mov rax, qword [rbx + 0x2580]
mov dword [rax + r8 + 0x14], edx
mov rax, qword [rbx + 0x2580]
inc r9d
inc r11
mov dword [rax + r8 + 4], edi
mov eax, dword [r10]
mov rcx, qword [rbx + 0x2580]
mov dword [r8 + rcx], eax
add r8, 0x18
add r10, 4
cmp r9d, esi
jbe 0x1000154b6
mov rax, qword [rbx + 0x2580]
mov r10d, r15d
lea r8d, [rdi + 1]
mov dword [rax + 0x14], r14d
mov eax, dword [rbx + 0x64]
mov rcx, qword [rbx + 0x2580]
mov dword [rcx + 8], eax
mov eax, dword [rbx + 0x68]
mov rcx, qword [rbx + 0x2580]
mov dword [rcx + 0xc], eax
mov eax, dword [rbx + 0x6c]
mov rcx, qword [rbx + 0x2580]
mov dword [rcx + 0x10], eax
mov r13, qword [rbx + 0x2580]
lea rax, [rbp + rbp*2]
shl rax, 3
sub r13, rax
sub r10d, edi
jmp 0x1000155d0
mov r12d, dword [rsp + 0x80]
inc r8d
inc edi
dec r10d
lea rsi, [rdi + rdi*2]
lea eax, [r8 - 2]
mov dword [rsp + 0x98], r10d
mov ecx, dword [r13 + rsi*8 + 4]
mov dword [rsp + 0x24], r8d
cmp ecx, eax
je 0x10001561e
mov eax, dword [r13 + rsi*8]
lea rcx, [rcx + rcx*2]
cmp eax, 3
jb 0x10001575b
add eax, 0xfffffffe
mov dword [rbx + 0x64], eax
mov eax, dword [r13 + rcx*8 + 8]
mov dword [rbx + 0x68], eax
mov eax, dword [r13 + rcx*8 + 0xc]
mov dword [rbx + 0x6c], eax
xor ebp, ebp
mov eax, dword [rbx + 0x64]
mov dword [r13 + rsi*8 + 8], eax
mov eax, dword [rbx + 0x68]
mov dword [r13 + rsi*8 + 0xc], eax
mov eax, dword [rbx + 0x6c]
mov dword [r13 + rsi*8 + 0x10], eax
cmp r12d, edi
je 0x1000158f1
mov edx, edi
mov rcx, rbx
call fcn.100016758
mov r10d, dword [rsp + 0x98]
lea ecx, [rax + rdi]
mov r12d, eax
cmp ecx, r15d
jbe 0x100015669
mov r12d, r10d
cmp r10d, 2
cmovl r12d, ebp
cmp r12d, 0x32
jg 0x10001585a
lea r9d, [r12 + rdi]
cmp r9d, dword [rsp + 0x2c]
jae 0x10001585a
cmp r12d, 2
jg 0x100015693
jne 0x1000156f7
cmp dword [rbx + 0x78], 0x800
jae 0x1000156f7
mov r11d, dword [rsp + 0x80]
cmp r11d, r9d
jae 0x1000156f7
mov edx, dword [rsp + 0x28]
mov r8d, 0xefc
mov ecx, r12d
sub ecx, edx
mov eax, r8d
add ecx, edi
cmp ecx, r8d
cmovb eax, ecx
sub r11d, edx
inc r11d
movsxd rdx, eax
movsxd r8, r11d
cmp r8, rdx
jg 0x1000156ef
lea rcx, [r8 + r8*2]
sub rdx, r8
shl rcx, 3
inc rdx
mov rax, qword [rbx + 0x2580]
add rcx, 0x18
or dword [rax + rcx - 4], 0xffffffff
sub rdx, 1
jne 0x1000156d9
mov dword [rsp + 0x80], r9d
mov rax, qword [rbx]
mov r8d, dword [rsp + 0x24]
mov ebp, dword [r13 + rsi*8 + 0x14]
movzx ecx, byte [rdi + rax]
movzx edx, byte [rcx + rbx + 0x2588]
lea rcx, [r8 + r8*2]
add edx, ebp
cmp edx, dword [r13 + rcx*8 + 0x14]
jae 0x100015727
mov dword [r13 + rcx*8 + 0x14], edx
mov dword [r13 + rcx*8 + 4], edi
mov esi, 2
mov r9d, esi
cmp r12d, esi
jb 0x1000155c8
lea r11d, [r8 + 1]
lea r10, [rbx + 0x78]
lea r15, [0x100004460]
movsxd rdx, dword [r10]
cmp edx, 0x400
jge 0x1000157a9
mov dl, byte [rdx + rbx + 0x47c]
jmp 0x1000157ca
xor ebp, ebp
cmp eax, ebp
jne 0x100015770
mov eax, dword [r13 + rcx*8 + 8]
mov dword [rbx + 0x64], eax
mov eax, dword [r13 + rcx*8 + 0xc]
jmp 0x100015782
cmp eax, 1
jne 0x100015792
mov eax, dword [r13 + rcx*8 + 0xc]
mov dword [rbx + 0x64], eax
mov eax, dword [r13 + rcx*8 + 8]
mov dword [rbx + 0x68], eax
mov eax, dword [r13 + rcx*8 + 0x10]
mov dword [rbx + 0x6c], eax
jmp 0x100015620
mov eax, dword [r13 + rcx*8 + 0x10]
mov dword [rbx + 0x64], eax
mov eax, dword [r13 + rcx*8 + 0xc]
mov dword [rbx + 0x68], eax
mov eax, dword [r13 + rcx*8 + 8]
jmp 0x10001578a
cmp edx, 0x80000
jge 0x1000157c4
mov rax, rdx
sar rax, 9
mov dl, byte [rax + rbx + 0x47c]
add dl, 0x12
jmp 0x1000157ca
sar edx, 0x11
add dl, 0x22
cmp r9d, 9
jae 0x1000157ee
movzx eax, dl
lea ecx, [r9 + rax*8 + 0xfe]
movzx eax, dl
movzx r8d, byte [rcx + rbx + 0x2588]
movzx eax, byte [rax + r15]
jmp 0x10001580a
movzx eax, byte [rsi + rbx + 0x283c]
movzx ecx, dl
movzx r8d, byte [rbx + rcx*8 + 0x268f]
add r8d, eax
movzx eax, byte [rcx + r15]
add r8d, eax
lea rcx, [r11 + r11*2]
add r8d, ebp
cmp r8d, dword [r13 + rcx*8 + 0x14]
jae 0x10001582d
mov dword [r13 + rcx*8 + 0x14], r8d
mov dword [r13 + rcx*8 + 4], edi
mov eax, dword [r10]
mov dword [r13 + rcx*8], eax
inc r9d
inc r11d
inc rsi
add r10, 4
cmp r9d, r12d
jbe 0x100015747
mov r15d, dword [rsp + 0x20]
mov r8d, dword [rsp + 0x24]
mov r10d, dword [rsp + 0x98]
jmp 0x1000155c8
lea r14d, [r12 + rdi]
movsxd rax, r12d
mov esi, dword [rbx + rax*4 + 0x70]
lea rcx, [r14 + r14*2]
mov dword [r13 + rcx*8], esi
mov dword [r13 + rcx*8 + 4], edi
cmp esi, 3
jne 0x100015896
cmp r12d, 0x10
jle 0x100015896
mov r8d, edi
lea edx, [rdi + 1]
mov rcx, rbx
sub r8d, dword [rbx + 8]
add r8d, 5
call fcn.100016a30
jmp 0x1000158bd
mov ebp, 1
cmp r12d, ebp
jbe 0x1000158bd
mov eax, ebp
lea edx, [rbp + rdi]
mov rcx, rbx
sub eax, dword [rbx + 8]
lea r8d, [rax + rdi + 4]
call fcn.100016a30
inc ebp
cmp ebp, r12d
jb 0x1000158a0
mov edi, r14d
xor r14d, r14d
cmp esi, 3
jb 0x1000158dc
mov eax, dword [rbx + 0x68]
mov dword [rbx + 0x6c], eax
mov eax, dword [rbx + 0x64]
mov dword [rbx + 0x68], eax
lea eax, [rsi - 2]
mov dword [rbx + 0x64], eax
jmp 0x1000158f4
cmp esi, r14d
je 0x1000158f4
mov eax, dword [rbx + rsi*4 + 0x64]
mov edx, dword [rbx + 0x64]
mov dword [rbx + 0x64], eax
mov dword [rbx + rsi*4 + 0x64], edx
jmp 0x1000158f4
xor r14d, r14d
mov r8d, dword [rsp + 0x28]
mov eax, edi
mov esi, r14d
lea rcx, [rax + rax*2]
mov edx, dword [r13 + rcx*8 + 4]
mov ecx, edx
mov ebp, edx
inc esi
lea rax, [rcx + rcx*2]
mov edx, dword [r13 + rax*8 + 4]
lea rax, [rcx + rcx*2]
mov dword [r13 + rax*8 + 4], edi
mov edi, ebp
cmp ebp, r8d
jne 0x100015907
mov eax, dword [rbx + 0x38]
lea ecx, [rsi + rax]
cmp ecx, 0xfff8
jae 0x100015942
mov eax, dword [rbx + 0x3c]
lea ecx, [rsi + rax]
cmp ecx, 0x7ff8
jb 0x10001594e
mov edx, ebp
mov rcx, rbx
call fcn.100015d8c
jmp 0x100015926
mov r8d, edi
lea r9d, [rdi + 1]
lea r10, [r8 + r8*2]
cmp dword [r13 + r10*8 + 4], r9d
jbe 0x1000159bf
mov ecx, dword [rbx + 0x38]
mov rdx, qword [rbx + 0x50]
mov eax, 1
mov r8, rcx
and ecx, 7
shl al, cl
shr r8, 3
or byte [r8 + rdx], al
mov dl, byte [r13 + r10*8 + 4]
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x48]
sub dl, dil
sub dl, 2
mov byte [rcx + rax], dl
inc dword [rbx + 0x38]
mov eax, dword [r13 + r10*8 + 4]
mov r8d, dword [rbx + 0x3c]
mov rcx, qword [rbx + 0x40]
lea rdx, [rax + rax*2]
mov eax, dword [r13 + rdx*8]
mov dword [rcx + r8*4], eax
inc dword [rbx + 0x3c]
mov edi, dword [r13 + r10*8 + 4]
mov dword [rsp + 0x80], edi
jmp 0x1000159de
mov rax, qword [rbx]
mov edx, dword [rbx + 0x38]
mov rcx, qword [rbx + 0x48]
mov al, byte [r8 + rax]
mov edi, r9d
mov dword [rsp + 0x80], r9d
mov byte [rdx + rcx], al
inc dword [rbx + 0x38]
add esi, 0xffffffff
jne 0x10001594e
mov ecx, dword [rbx + 0x38]
cmp ecx, dword [rbx + 0x2574]
jb 0x100015a59
cmp ecx, r14d
je 0x100015a4f
mov r9d, ecx
mov rcx, rbx
cmp dword [rbx + 0x9b4], r14d
je 0x100015a19
xor r8d, r8d
xor edx, edx
call fcn.100017ecc
mov dword [rbx + 0x9b4], r14d
jmp 0x100015a2b
mov r8d, dword [rbx + 0x257c]
mov edx, dword [rbx + 0x2578]
call fcn.100017d6c
xor edx, edx
mov rcx, rbx
call fcn.100017b84
mov rcx, rbx
call fcn.100017c30
mov ecx, dword [rbx + 0x38]
mov eax, dword [rbx + 0x3c]
mov dword [rbx + 0x2578], ecx
mov dword [rbx + 0x257c], eax
add dword [rbx + 0x2574], 0x1000
mov r11d, dword [rsp + 0x90]
lea r13, [0x100004460]
cmp byte [rbx + 0x9b1], r14b
je 0x1000153b7
cmp ecx, 0xfe00
jae 0x100015a91
cmp dword [rbx + 0x3c], 0x7e00
lea r13, [0x100004460]
jb 0x1000153b7
lea rdx, [rsp + 0x80]
mov rcx, rbx
call fcn.100015de4
mov edi, dword [rsp + 0x80]
cmp eax, r14d
jne 0x1000153a8
mov edx, edi
mov rcx, rbx
call fcn.100015d8c
jmp 0x1000153a8
movsxd rax, esi
mov r12d, dword [rbx + rax*4 + 0x70]
cmp r12d, 3
jne 0x100015aeb
cmp esi, 0x10
jle 0x100015aeb
mov r8d, edi
lea edx, [rdi + 1]
mov rcx, rbx
sub r8d, dword [rbx + 8]
add r8d, 5
call fcn.100016a30
jmp 0x100015b10
mov ebp, 1
cmp esi, ebp
jbe 0x100015b10
mov eax, ebp
lea edx, [rbp + rdi]
mov rcx, rbx
sub eax, dword [rbx + 8]
lea r8d, [rax + rdi + 4]
call fcn.100016a30
inc ebp
cmp ebp, esi
jb 0x100015af4
mov ecx, dword [rbx + 0x38]
mov rdx, qword [rbx + 0x50]
add edi, esi
mov r8, rcx
and ecx, 7
mov eax, 1
shl al, cl
shr r8, 3
sub sil, 2
or byte [r8 + rdx], al
mov ecx, dword [rbx + 0x38]
mov rax, qword [rbx + 0x48]
mov byte [rcx + rax], sil
mov ecx, dword [rbx + 0x3c]
inc dword [rbx + 0x38]
mov rax, qword [rbx + 0x40]
mov dword [rsp + 0x80], edi
mov dword [rax + rcx*4], r12d
inc dword [rbx + 0x3c]
cmp r12d, 3
jb 0x100015b71
mov eax, dword [rbx + 0x68]
mov dword [rbx + 0x6c], eax
mov eax, dword [rbx + 0x64]
mov dword [rbx + 0x68], eax
lea eax, [r12 - 2]
mov dword [rbx + 0x64], eax
jmp 0x100015b86
cmp r12d, r14d
je 0x100015b86
mov eax, dword [rbx + r12*4 + 0x64]
mov edx, dword [rbx + 0x64]
mov dword [rbx + 0x64], eax
mov dword [rbx + r12*4 + 0x64], edx
cmp dword [rbx + 0x38], 0xfff8
jae 0x100015ba4
cmp dword [rbx + 0x3c], 0x7ff8
mov r11d, dword [rsp + 0x90]
jb 0x1000153b7
mov edx, edi
mov rcx, rbx
call fcn.100015d8c
mov r11d, dword [rsp + 0x90]
jmp 0x1000153b7
mov eax, edi
sub eax, dword [rbx + 8]
cmp dword [rsp + 0x88], 0x8000
mov dword [rbx + 0x9c0], eax
jge 0x100015c02
cmp byte [rbx + 0x9b1], r14b
je 0x100015d0b
lea rdx, [rsp + 0x80]
mov rcx, rbx
call fcn.100015de4
cmp eax, r14d
je 0x100015d7c
mov edi, dword [rsp + 0x80]
jmp 0x100015bae
lea esi, [rax + 0x36]
mov ebp, 1
mov rax, qword [rbx]
mov edx, edi
sub edx, ebp
mov r8d, edx
movzx ecx, word [rdx + rax]
mov rax, qword [rbx + 0x10]
lea r9, [rax + rcx*4]
cmp dword [r9], edx
jne 0x100015c41
mov r10, qword [rbx + 0x18]
mov r11, qword [rbx + 0x20]
cmp dword [r9], esi
ja 0x100015d22
mov dword [r9], r14d
mov dword [r11 + rdx*4], r14d
mov dword [r10 + rdx*4], r14d
inc ebp
cmp ebp, 0x32
jbe 0x100015c0a
mov eax, dword [rbx]
sub eax, dword [rbx + 0x4378]
add eax, edi
cmp eax, dword [rbx + 8]
jb 0x100015d0b
sub eax, dword [rbx + 8]
cmp eax, dword [rbx + 0x9bc]
jb 0x100015d0b
cmp byte [rbx + 0x9b1], r14b
je 0x100015c93
lea rdx, [rsp + 0x80]
mov rcx, rbx
call fcn.100015de4
cmp eax, r14d
jne 0x100015bf9
mov edi, dword [rsp + 0x80]
mov rcx, qword [rbx + 0x4378]
mov edx, dword [rbx + 0x9bc]
mov r8d, dword [rbx + 8]
add rdx, rcx
call fcn.1000191d0
mov rcx, qword [rbx + 0x4380]
mov eax, dword [rbx + 0x9bc]
mov r8d, dword [rbx + 8]
lea rdx, [rcx + rax*4]
shl r8, 2
call fcn.1000191d0
mov rcx, qword [rbx + 0x4388]
mov eax, dword [rbx + 0x9bc]
mov r8d, dword [rbx + 8]
lea rdx, [rcx + rax*4]
shl r8, 2
call fcn.1000191d0
mov eax, dword [rbx + 0x9bc]
mov r11d, edi
sub r11d, dword [rbx + 8]
sub qword [rbx], rax
shl rax, 2
sub qword [rbx + 0x18], rax
sub qword [rbx + 0x20], rax
mov dword [rbx + 0x9c0], r11d
mov dword [rbx + 0x478], edi
add rsp, 0x38
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov edx, dword [r10 + rdx*4]
cmp edx, esi
ja 0x100015d31
mov dword [r10 + r8*4], r14d
mov edx, r14d
mov ecx, dword [r11 + r8*4]
cmp ecx, esi
ja 0x100015d40
mov dword [r11 + r8*4], r14d
mov ecx, r14d
cmp edx, ecx
jbe 0x100015d60
cmp esi, edx
sbb eax, eax
and eax, edx
mov dword [r9], eax
cmp eax, r14d
je 0x100015c41
mov edx, dword [r11 + rax*4]
lea r9, [r11 + rax*4]
jmp 0x100015d40
cmp esi, ecx
sbb eax, eax
and eax, ecx
mov dword [r9], eax
cmp eax, r14d
je 0x100015c41
mov ecx, dword [r10 + rax*4]
lea r9, [r10 + rax*4]
jmp 0x100015d40
mov edi, dword [rsp + 0x80]
jmp 0x100015d0b