Function at 0x51fb70
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, 0xe8
mov r14, rdx
movzx eax, byte [rcx + 0x28]
cmp al, 0x82
jne 0x51fc82
movzx ebx, byte [rcx + 0x1c]
cmp bl, 0x82
je 0x51fdc6
movzx ebp, byte [rcx + 0x10]
mov qword [rsp + 0xa8], r11
cmp bpl, 0x81
je 0x51fbfb
mov qword [rsp + 0xa8], r11
cmp bpl, 0x80
je 0x51fbe0
movzx r11d, byte [rcx + 0x13]
mov byte [rsp + 0x52], r11b
movzx r11d, word [rcx + 0x11]
mov word [rsp + 0x50], r11w
mov r11d, dword [rcx + 0x18]
mov qword [rsp + 0xa8], r11
mov r13d, dword [rcx + 0x14]
movzx r11d, byte [rsp + 0x52]
mov byte [rsp + 0x32], r11b
movzx r11d, word [rsp + 0x50]
mov word [rsp + 0x30], r11w
mov rdi, qword [rcx + 8]
mov qword [rsp + 0xb8], r11
cmp bl, 0x81
je 0x51fc54
mov qword [rsp + 0xb8], r11
cmp bl, 0x80
je 0x51fc3a
movzx r11d, byte [rcx + 0x1f]
mov byte [rsp + 0x52], r11b
movzx r11d, word [rcx + 0x1d]
mov word [rsp + 0x50], r11w
mov r11d, dword [rcx + 0x24]
mov qword [rsp + 0xb8], r11
mov esi, dword [rcx + 0x20]
movzx r11d, byte [rsp + 0x52]
mov byte [rsp + 0x36], r11b
movzx r11d, word [rsp + 0x50]
mov word [rsp + 0x34], r11w
mov r11, qword [rcx]
movzx ecx, byte [rsp + 0x32]
mov byte [rsp + 0x2e], cl
movzx ecx, word [rsp + 0x30]
mov word [rsp + 0x2c], cx
movzx ecx, word [rsp + 0x34]
mov word [rsp + 0x4c], cx
movzx ecx, byte [rsp + 0x36]
mov byte [rsp + 0x4e], cl
jmp 0x51fdd6
movzx r8d, byte [rcx + 0x40]
cmp r8b, 0x82
je 0x51fcd8
cmp r8b, 0x81
je 0x51fcc5
cmp r8b, 0x80
je 0x51fcae
movzx edx, byte [rcx + 0x43]
mov byte [rsp + 0x52], dl
movzx edx, word [rcx + 0x41]
mov word [rsp + 0x50], dx
mov r9d, dword [rcx + 0x48]
mov r10d, dword [rcx + 0x44]
movzx edx, byte [rsp + 0x52]
mov byte [rsp + 0x36], dl
movzx edx, word [rsp + 0x50]
mov word [rsp + 0x34], dx
movzx edx, byte [rsp + 0x36]
mov byte [rsp + 0x52], dl
movzx edx, word [rsp + 0x34]
mov word [rsp + 0x50], dx
mov byte [rsp + 0x2b], r8b
movzx edx, byte [rsp + 0x52]
mov byte [rsp + 0x2e], dl
movzx edx, word [rsp + 0x50]
mov word [rsp + 0x2c], dx
cmp al, 0x81
je 0x51fd27
cmp al, 0x80
je 0x51fd0d
movzx edx, byte [rcx + 0x2b]
mov byte [rsp + 0x52], dl
movzx edx, word [rcx + 0x29]
mov word [rsp + 0x50], dx
mov r8d, dword [rcx + 0x30]
mov edx, dword [rcx + 0x2c]
movzx r11d, byte [rsp + 0x52]
mov byte [rsp + 0x32], r11b
movzx r11d, word [rsp + 0x50]
mov word [rsp + 0x30], r11w
movzx r12d, byte [rcx + 0x34]
cmp r12b, 0x81
je 0x51fd74
cmp r12b, 0x80
je 0x51fd51
movzx r11d, byte [rcx + 0x37]
mov byte [rsp + 0x52], r11b
movzx r11d, word [rcx + 0x35]
mov word [rsp + 0x50], r11w
mov r15d, dword [rcx + 0x3c]
mov r11d, dword [rcx + 0x38]
mov dword [rsp + 0xc4], r11d
movzx r11d, byte [rsp + 0x52]
mov byte [rsp + 0x36], r11b
movzx r11d, word [rsp + 0x50]
mov word [rsp + 0x34], r11w
movzx r11d, byte [rsp + 0x2e]
mov byte [rsp + 0x42], r11b
movzx r11d, word [rsp + 0x2c]
mov word [rsp + 0x40], r11w
movzx r11d, word [rsp + 0x30]
mov word [rsp + 0x48], r11w
movzx r11d, byte [rsp + 0x32]
mov byte [rsp + 0x4a], r11b
movzx r11d, word [rsp + 0x34]
mov word [rsp + 0x44], r11w
movzx r11d, byte [rsp + 0x36]
mov byte [rsp + 0x46], r11b
movzx ebx, byte [rcx + 0x1c]
cmp bl, 0x82
jne 0x51fb9f
mov qword [rsp + 0xb8], rcx
mov qword [rsp + 0xa8], rcx
movzx ecx, byte [rsp + 0x4a]
mov byte [rsp + 0x7b], cl
movzx ecx, word [rsp + 0x48]
mov word [rsp + 0x79], cx
movzx ecx, word [rsp + 0x44]
mov word [rsp + 0x85], cx
movzx ecx, byte [rsp + 0x46]
mov byte [rsp + 0x87], cl
movzx ecx, word [rsp + 0x40]
mov word [rsp + 0x91], cx
movzx ecx, byte [rsp + 0x42]
mov byte [rsp + 0x93], cl
movzx ecx, word [rsp + 0x2c]
mov word [rsp + 0x61], cx
movzx ecx, byte [rsp + 0x2e]
mov byte [rsp + 0x63], cl
movzx ecx, word [rsp + 0x4c]
mov word [rsp + 0x6d], cx
movzx ecx, byte [rsp + 0x4e]
mov byte [rsp + 0x6f], cl
mov qword [rsp + 0x50], r11
mov qword [rsp + 0x58], rdi
mov byte [rsp + 0x60], bpl
mov dword [rsp + 0x64], r13d
mov rcx, qword [rsp + 0xa8]
mov dword [rsp + 0x68], ecx
mov byte [rsp + 0x6c], bl
mov dword [rsp + 0x70], esi
mov rcx, qword [rsp + 0xb8]
mov dword [rsp + 0x74], ecx
mov byte [rsp + 0x78], al
mov dword [rsp + 0x7c], edx
mov dword [rsp + 0x80], r8d
mov byte [rsp + 0x84], r12b
mov ecx, dword [rsp + 0xc4]
mov dword [rsp + 0x88], ecx
mov dword [rsp + 0x8c], r15d
movzx ecx, byte [rsp + 0x2b]
mov byte [rsp + 0x90], cl
mov dword [rsp + 0x94], r10d
mov dword [rsp + 0x98], r9d
cmp al, 0x82
je 0x5201bf
mov byte [rsp + 0x3f], r12b
mov qword [rsp + 0xe0], r15
mov byte [rsp + 0x3e], bpl
mov dword [rsp + 0xdc], r13d
mov qword [rsp + 0xa0], r14
mov qword [rsp + 0xd0], r11
mov qword [rsp + 0xc8], rdi
mov byte [rsp + 0x2a], bl
mov dword [rsp + 0xb4], esi
cmp al, 0x81
jne 0x51ffd5
movzx edx, byte [rsp + 0x2b]
cmp dl, 0x82
mov ebx, dword [rsp + 0xc4]
je 0x52016c
mov byte [rsp + 0x90], 0x81
cmp dl, 0x81
je 0x52016c
lea rax, [rsp + 0x79]
mov ecx, dword [rax + 0x1f]
mov dword [rax + 7], ecx
mov rcx, qword [rax + 0x18]
mov qword [rax], rcx
mov byte [rsp + 0x78], dl
cmp dl, 0x80
jne 0x5200f4
mov rax, qword [rsp + 0xa0]
mov r12, qword [rax + 0x20]
mov r13, qword [rax + 0x28]
mov bpl, pe_nt_image_headers64
jmp 0x51ff9b
mov edx, dword [rsp + 0x7c]
lea rax, [rsp + 0x78]
mov dword [rax + 8], 0
mov qword [rax], 0
xor ebp, ebp
mov rcx, r12
call qword [r13 + 0x20]
mov r14b, 1
test al, al
jne 0x520792
cmp bpl, 0x80
je 0x51ff70
movzx r15d, byte [rsp + 0x82]
cmp r15b, byte [rsp + 0x83]
jae 0x520164
lea eax, [r15 + 1]
mov byte [rsp + 0x82], al
cmp r15b, 0xa
jae 0x520834
movzx edx, byte [rsp + r15 + 0x78]
jmp 0x51ff89
mov r13d, r8d
shr r13d, 0x18
shr r8d, 0x10
cmp al, 0x80
jne 0x520064
mov rax, qword [rsp + 0xa0]
mov r14, qword [rax + 0x20]
mov r12, qword [rax + 0x28]
mov bpl, pe_nt_image_headers64
jmp 0x520031
lea rax, [rsp + 0x78]
mov dword [rax + 8], 0
mov qword [rax], 0
xor edi, edi
xor r13d, r13d
xor esi, esi
xor ebp, ebp
mov rcx, r14
call qword [r12 + 0x20]
mov edx, edi
mov r8d, esi
test al, al
jne 0x52078f
cmp bpl, 0x80
je 0x520000
cmp r8b, r13b
jae 0x51ff0c
lea esi, [r8 + 1]
mov byte [rsp + 0x82], sil
movzx r15d, r8b
cmp r8b, 0xa
jae 0x520834
mov edi, edx
movzx edx, byte [rsp + r15 + 0x78]
jmp 0x52001c
movzx eax, r8b
movzx ecx, r13b
movzx edx, r8b
cmp cl, dl
cmovbe ecx, edx
cmp dl, 0xb
mov r8d, 0xa
cmovae r8d, edx
movzx r12d, cl
movzx r15d, r8b
mov rcx, qword [rsp + 0xa0]
mov r14, qword [rcx + 0x20]
mov r13, qword [rcx + 0x28]
lea rcx, [rsp + 0x50]
lea rbp, [rax + rcx]
add rbp, 0x28
mov rdi, r15
sub rdi, rax
lea ecx, [rdx + 1]
movzx esi, cl
sub r12, rax
xor ebx, ebx
nop dword [rax + rax]
cmp r12, rbx
je 0x51ff0c
lea eax, [rsi + rbx]
mov byte [rsp + 0x82], al
cmp rdi, rbx
je 0x520834
movzx edx, byte [rbp + rbx]
mov rcx, r14
call qword [r13 + 0x20]
inc rbx
test al, al
je 0x5200c0
jmp 0x52078f
movzx eax, byte [rsp + 0x83]
movzx r13d, byte [rsp + 0x82]
cmp al, r13b
cmovbe eax, r13d
movzx edi, al
cmp r13b, 0xb
mov r15d, 0xa
cmovae r15d, r13d
mov rax, qword [rsp + 0xa0]
mov r12, qword [rax + 0x20]
mov rsi, qword [rax + 0x28]
nop dword [rax]
cmp rdi, r13
je 0x520164
lea eax, [r13 + 1]
mov byte [rsp + 0x82], al
cmp r15, r13
je 0x520834
movzx edx, byte [rsp + r13 + 0x78]
mov rcx, r12
call qword [rsi + 0x20]
inc r13
mov r14b, 1
test al, al
je 0x520130
jmp 0x520792
mov byte [rsp + 0x90], 0x81
movzx eax, byte [rsp + 0x3f]
cmp al, 0x81
mov rdx, qword [rsp + 0xe0]
jne 0x5205f5
mov byte [rsp + 0x84], 0x81
mov byte [rsp + 0x78], 0x82
mov esi, dword [rsp + 0xb4]
movzx ebx, byte [rsp + 0x2a]
mov rdi, qword [rsp + 0xc8]
mov r11, qword [rsp + 0xd0]
mov r14, qword [rsp + 0xa0]
mov r13d, dword [rsp + 0xdc]
movzx ebp, byte [rsp + 0x3e]
cmp bl, 0x82
jne 0x5201cc
xor r14d, r14d
jmp 0x520792
mov qword [rsp + 0xd0], r11
mov qword [rsp + 0xc8], rdi
mov byte [rsp + 0x2a], bl
mov dword [rsp + 0xb4], esi
mov rdi, qword [r14 + 0x20]
mov r15, qword [r14 + 0x28]
cmp bpl, 0x81
mov rdx, qword [rsp + 0xa8]
jne 0x5204cf
mov r13, qword [rsp + 0xd0]
test r13, r13
je 0x520552
cmp r13, qword [rsp + 0xc8]
je 0x520552
movzx ebx, byte [r13]
test bl, bl
js 0x52022e
inc r13
jmp 0x520291
mov eax, ebx
and eax, 0x1f
movzx edx, byte [r13 + 1]
and edx, 0x3f
cmp bl, 0xdf
jbe 0x520279
movzx ecx, byte [r13 + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp bl, 0xf0
jb 0x520286
movzx ebx, byte [r13 + 3]
and eax, 7
shl eax, 0x12
shl ecx, 6
and ebx, 0x3f
or ebx, ecx
or ebx, eax
cmp ebx, 0x110000
je 0x520552
add r13, 4
jmp 0x520291
add r13, 2
shl eax, 6
or eax, edx
mov ebx, eax
jmp 0x520291
add r13, 3
shl eax, 0xc
or ecx, eax
mov ebx, ecx
mov r12d, ebx
mov bpl, 2
mov ax, 0x5c
cmp ebx, 0x27
ja case.default.0x5202b7
mov dx, 0x3000
xor ecx, ecx
lea r8, [0x00520890]
movsxd r9, dword [r8 + r12*4]
add r9, r8
mov r8, r12
jmp r9
xor r12d, r12d
mov dx, 0x7400
jmp 0x520310
cmp ebx, 0x5c
jne case.0x5202b7.1
xor r12d, r12d
mov dx, 0x5c00
jmp 0x520310
mov ecx, ebx
call dbg.is_printable
test al, al
je 0x520402
mov ax, pe_nt_image_headers64
xor edx, edx
xor r12d, r12d
xor r8d, r8d
jmp case.0x5202b7.0
xor r12d, r12d
mov dx, 0x6e00
jmp 0x520310
xor r12d, r12d
mov dx, 0x7200
jmp 0x520310
xor r12d, r12d
mov dx, 0x2200
jmp 0x520310
xor r12d, r12d
mov dx, 0x2700
xor ebx, ebx
xor r8d, r8d
xor ecx, ecx
or r12, r8
movzx eax, ax
or edx, eax
mov r8d, ebx
shl r8, 0x10
or r8, r12
mov word [rsp + 0x60], dx
mov qword [rsp + 0x62], r8
mov byte [rsp + 0x6b], bpl
cmp al, 0x80
jne 0x5203b2
mov r12b, pe_nt_image_headers64
jmp 0x520383
lea rax, [rsp + 0x60]
mov dword [rax + 8], 0
mov qword [rax], 0
xor r14d, r14d
xor ebp, ebp
xor esi, esi
xor r12d, r12d
mov rcx, rdi
mov edx, ebx
call qword [r15 + 0x20]
mov ebx, r14d
mov ecx, esi
test al, al
jne 0x52078f
cmp r12b, 0x80
je 0x520350
cmp cl, bpl
jae 0x520212
lea esi, [rcx + 1]
mov byte [rsp + 0x6a], sil
movzx eax, cl
cmp cl, 0xa
jae 0x520865
mov r14d, ebx
movzx eax, byte [rsp + rax + 0x60]
mov ebx, eax
jmp 0x52036d
movzx ebx, cl
movzx eax, bpl
cmp bpl, bl
cmovbe eax, ebx
movzx esi, al
nop word cs:[rax + rax]
cmp rsi, rbx
je 0x520212
lea eax, [rbx + 1]
mov byte [rsp + 0x6a], al
cmp rbx, 0xa
je 0x520860
movzx edx, byte [rsp + rbx + 0x60]
mov rcx, rdi
call qword [r15 + 0x20]
inc rbx
test al, al
je 0x5203d0
jmp 0x52078f
mov byte [rsp + 0x36], 0
mov word [rsp + 0x34], 0
mov byte [rsp + 0x3d], 0x7d
mov rax, r12
shr rax, 0x14
lea rcx, [0x0055c9e4]
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x37], al
mov eax, ebx
shr eax, 0x10
and eax, 0xf
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x38], al
mov eax, ebx
shr eax, 0xc
and eax, 0xf
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x39], al
mov eax, ebx
shr eax, 8
and eax, 0xf
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x3a], al
mov eax, ebx
shr eax, 4
and eax, 0xf
movzx eax, byte [rax + rcx]
mov byte [rsp + 0x3b], al
and r12d, 0xf
movzx eax, byte [r12 + rcx]
mov byte [rsp + 0x3c], al
or ebx, 1
bsr ecx, ebx
xor ecx, 0x1c
shr ecx, 2
add rcx, 0xfffffffffffffffe
cmp rcx, 0xb
jae 0x52087b
mov byte [rsp + rcx + 0x36], 0x7b
mov word [rsp + rcx + 0x34], 0x755c
movzx edx, word [rsp + 0x34]
movzx eax, dl
and edx, 0xff00
mov rbx, qword [rsp + 0x36]
mov r12, rbx
movzx r8d, bx
shr rbx, 0x10
movabs r9, 0xffff000000000000
and r12, r9
mov bpl, 0xa
jmp case.0x5202b7.0
mov r12d, edx
shr r12d, 0x18
shr edx, 0x10
cmp bpl, 0x80
jne 0x520688
mov bpl, pe_nt_image_headers64
jmp 0x520524
lea rax, [rsp + 0x60]
mov dword [rax + 8], 0
mov qword [rax], 0
xor r14d, r14d
xor r12d, r12d
xor esi, esi
xor ebp, ebp
mov rcx, rdi
mov edx, r13d
call qword [r15 + 0x20]
mov r13d, r14d
mov edx, esi
test al, al
jne 0x52078f
cmp bpl, 0x80
je 0x5204f0
cmp dl, r12b
jae 0x520201
lea esi, [rdx + 1]
mov byte [rsp + 0x6a], sil
movzx ebx, dl
cmp dl, 0xa
jae 0x52084a
mov r14d, r13d
movzx r13d, byte [rsp + rbx + 0x60]
jmp 0x52050d
movzx eax, byte [rsp + 0x2a]
cmp al, 0x81
je 0x5201c4
mov r8, qword [rsp + 0xb8]
mov esi, r8d
shr esi, 0x18
shr r8d, 0x10
cmp al, 0x80
jne 0x5207a9
mov bpl, pe_nt_image_headers64
mov edx, dword [rsp + 0xb4]
jmp 0x5205c5
lea rax, [rsp + 0x6c]
mov dword [rax + 8], 0
mov qword [rax], 0
xor r12d, r12d
xor esi, esi
xor r13d, r13d
xor ebp, ebp
mov rcx, rdi
call qword [r15 + 0x20]
mov r14b, 1
mov edx, r12d
mov r8d, r13d
test al, al
jne 0x520792
cmp bpl, 0x80
je 0x520590
cmp r8b, sil
jae 0x5201c4
lea r13d, [r8 + 1]
mov byte [rsp + 0x76], r13b
movzx ebx, r8b
cmp r8b, 0xa
jae 0x52084a
mov r12d, edx
movzx edx, byte [rsp + rbx + 0x6c]
jmp 0x5205ad
mov r12d, edx
shr r12d, 0x18
shr edx, 0x10
cmp al, 0x80
jne 0x520702
mov rax, qword [rsp + 0xa0]
mov r14, qword [rax + 0x20]
mov r13, qword [rax + 0x28]
mov bpl, pe_nt_image_headers64
jmp 0x520654
lea rax, [rsp + 0x84]
mov dword [rax + 8], 0
mov qword [rax], 0
xor edi, edi
xor r12d, r12d
xor esi, esi
xor ebp, ebp
mov rcx, r14
mov edx, ebx
call qword [r13 + 0x20]
mov ebx, edi
mov edx, esi
test al, al
jne 0x52078f
cmp bpl, 0x80
je 0x520620
cmp dl, r12b
jae 0x520181
lea esi, [rdx + 1]
mov byte [rsp + 0x8e], sil
movzx r15d, dl
cmp dl, 0xa
jae 0x520834
mov edi, ebx
movzx ebx, byte [rsp + r15 + 0x84]
jmp 0x52063f
movzx eax, r12b
movzx ecx, dl
cmp al, cl
cmovbe eax, ecx
movzx edx, dl
movzx esi, al
cmp cl, 0xb
mov eax, 0xa
cmovae eax, ecx
movzx ebx, al
lea rax, [rsp + 0x50]
lea r12, [rdx + rax]
add r12, 0x10
mov r13, rbx
sub r13, rdx
lea eax, [rcx + 1]
movzx ebp, al
sub rsi, rdx
xor r14d, r14d
nop word [rax + rax]
cmp rsi, r14
je 0x520201
lea eax, [r14 + rbp]
mov byte [rsp + 0x6a], al
cmp r13, r14
je 0x52084a
movzx edx, byte [r12 + r14]
mov rcx, rdi
call qword [r15 + 0x20]
inc r14
test al, al
je 0x5206d0
jmp 0x52078f
movzx eax, dl
movzx ecx, r12b
movzx edx, dl
cmp cl, dl
cmovbe ecx, edx
cmp dl, 0xb
mov r8d, 0xa
cmovae r8d, edx
movzx ebx, cl
movzx r15d, r8b
mov rcx, qword [rsp + 0xa0]
mov rdi, qword [rcx + 0x20]
mov r14, qword [rcx + 0x28]
lea rcx, [rsp + 0x50]
lea r12, [rax + rcx]
add r12, 0x34
mov r13, r15
sub r13, rax
lea ecx, [rdx + 1]
movzx esi, cl
sub rbx, rax
xor ebp, ebp
nop word cs:[rax + rax]
cmp rbx, rbp
je 0x520181
lea eax, [rsi + rbp]
mov byte [rsp + 0x8e], al
cmp r13, rbp
je 0x520834
movzx edx, byte [r12 + rbp]
mov rcx, rdi
call qword [r14 + 0x20]
inc rbp
test al, al
je 0x520760
mov r14b, 1
mov eax, r14d
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movzx eax, sil
movzx ecx, r8b
cmp al, cl
cmovbe eax, ecx
movzx edx, r8b
movzx r12d, al
cmp cl, 0xb
mov eax, 0xa
cmovae eax, ecx
movzx ebx, al
lea rax, [rsp + 0x50]
add rax, rdx
add rax, 0x1c
mov qword [rsp + 0xa8], rax
mov r13, rbx
sub r13, rdx
lea eax, [rcx + 1]
movzx ebp, al
sub r12, rdx
xor esi, esi
nop word cs:[rax + rax]
cmp r12, rsi
setne r14b
je 0x520792
lea eax, [rsi + rbp]
mov byte [rsp + 0x76], al
cmp r13, rsi
je 0x52084a
mov rax, qword [rsp + 0xa8]
movzx edx, byte [rax + rsi]
mov rcx, rdi
call qword [r15 + 0x20]
inc rsi
test al, al
je 0x520800
jmp 0x520792
lea r8, [0x0055ca48]
mov edx, 0xa
mov rcx, r15
call dbg.panic_bounds_check
ud2
lea r8, [0x0055ca48]
mov edx, 0xa
mov rcx, rbx
call dbg.panic_bounds_check
ud2
mov eax, 0xa
lea r8, [0x0055ca48]
mov edx, 0xa
mov rcx, rax
call dbg.panic_bounds_check
ud2
lea r8, [0x0055ca10]
mov edx, 0xa
call dbg.slice_start_index_len_fail
ud2