Function at 0x140004560
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, 0x28
mov eax, 0xfffffffe
test rcx, rcx
je 0x140004599
mov rdi, rcx
cmp qword [rcx + 0x30], 0
je 0x140004599
cmp qword [rdi + 0x38], 0
je 0x140004599
mov rsi, qword [rdi + 0x28]
test rsi, rsi
je 0x140004599
cmp qword [rsi], rdi
je 0x1400045aa
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ebx, edx
mov ecx, dword [rsi + 8]
lea edx, [rcx - 0x39]
cmp edx, 0x38
ja 0x1400046d0
movabs rbp, 0x100400400011001
bt rbp, rdx
jae 0x1400046d0
cmp ebx, 5
ja 0x140004599
cmp qword [rdi + 0x10], 0
je 0x1400049b9
cmp dword [rdi + 8], 0
je 0x1400045ef
cmp qword [rdi], 0
je 0x1400049b9
cmp ebx, 4
je 0x140004600
cmp ecx, 0x29a
je 0x1400049b9
cmp dword [rdi + 0x18], 0
je 0x1400049c9
mov eax, dword [rsi + 0x40]
mov dword [rsi + 0x40], ebx
cmp dword [rsi + 0x28], 0
jne 0x1400047af
cmp dword [rdi + 8], 0
je 0x14000480f
cmp ecx, 0x29a
je 0x140004858
cmp ecx, 0x2a
je 0x1400049de
cmp ecx, 0x39
je 0x140004b3b
add ecx, 0xffffffbb
cmp ecx, 0x22
ja case.0x140004658.70
lea rax, [0x14000584c]
movsxd rcx, dword [rax + rcx*4]
add rcx, rax
jmp rcx
cmp dword [rdi + 8], 0
je 0x140004862
movsxd rbp, dword [rsi + 0xac]
test rbp, rbp
je 0x140005074
mov eax, dword [rsi + 0xb0]
cmp eax, 2
je 0x140004889
cmp eax, 3
je 0x140005083
shl rbp, 4
lea rax, [0x14000c1e0]
mov rcx, rsi
mov edx, ebx
call qword [rbp + rax + 8]
mov ecx, eax
or ecx, 1
cmp ecx, 3
je 0x1400047a3
mov ecx, eax
or ecx, 2
cmp ecx, 2
jne 0x1400046ea
xor eax, eax
cmp dword [rdi + 0x18], 0
jne 0x140004599
mov dword [rsi + 0x40], 0xffffffff
jmp 0x140004599
cmp ecx, 0x29a
je 0x1400045cf
cmp ecx, 0x2a
je 0x1400045cf
jmp 0x140004599
cmp eax, 1
je 0x140005458
cmp ebx, 4
jne 0x140004808
mov ecx, dword [rsi + 0x2c]
mov eax, 1
test ecx, ecx
jle 0x140004599
mov eax, dword [rdi + 0x4c]
cmp ecx, 2
jne 0x140005791
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0x4d]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0x4e]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0x4f]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0xc]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0xd]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov al, byte [rdi + 0xe]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
movzx eax, byte [rdi + 0xf]
jmp 0x1400057cc
mov dword [rsi + 8], 0x29a
jmp 0x1400046ae
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x1400047fd
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x1400047fa
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov eax, dword [rdi + 0x18]
test eax, eax
jne 0x140004849
mov dword [rsi + 0x40], 0xffffffff
xor eax, eax
jmp 0x140004599
mov r8d, 9
mov ebp, 9
cmp ebx, 4
jg 0x140004821
xor ebp, ebp
cmp eax, 4
jg 0x140004829
xor r8d, r8d
cmp ebx, 4
je 0x140004624
lea edx, [rbx + rbx]
sub edx, ebp
add eax, eax
sub eax, r8d
cmp edx, eax
jg 0x140004624
jmp 0x1400049c9
mov ecx, dword [rsi + 8]
cmp ecx, 0x29a
jne 0x140004630
cmp dword [rdi + 8], 0
jne 0x1400049c9
cmp dword [rsi + 0x9c], 0
jne 0x140004664
test ebx, ebx
je 0x1400046f3
cmp dword [rsi + 8], 0x29a
je 0x1400046f3
jmp 0x140004664
cmp dword [rsi + 0x9c], 0
jne 0x1400048a7
mov rcx, rsi
call fcn.140003f80
cmp dword [rsi + 0x9c], 0
je 0x140005346
mov dword [rsi + 0x88], 0
mov rax, qword [rsi + 0x50]
mov ecx, dword [rsi + 0x94]
movzx eax, byte [rax + rcx]
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 0
mov rcx, qword [rsi + 0x16e8]
mov edx, dword [rsi + 0x16f4]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
add word [rsi + rax*4 + 0xbc], 1
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
add ecx, 0xffffffff
add dword [rsi + 0x9c], 0xffffffff
mov r8d, dword [rsi + 0x94]
add r8d, 1
mov dword [rsi + 0x94], r8d
cmp eax, ecx
jne 0x140004889
mov edx, dword [rsi + 0x84]
sub r8d, edx
test edx, edx
js 0x140004937
add rdx, qword [rsi + 0x50]
jmp 0x140004939
xor edx, edx
mov rcx, rsi
xor r9d, r9d
call fcn.1400071b0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x1400049a7
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x1400049a7
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x140004889
jmp 0x1400046b8
mov rcx, qword [str.stream_error]
mov qword [rdi + 0x20], rcx
jmp 0x140004599
mov rax, qword [str.buffer_error]
mov qword [rdi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x140004599
mov eax, dword [rsi + 0x48]
shl eax, 0xc
add eax, 0xffff8800
xor edx, edx
cmp dword [rsi + 0xb0], 1
jg 0x140004a15
mov ecx, dword [rsi + 0xac]
cmp ecx, 2
jl 0x140004a15
mov edx, 0x40
cmp ecx, 6
jl 0x140004a15
setne cl
movzx edx, cl
or edx, 2
shl edx, 6
or edx, eax
mov ecx, edx
or ecx, 0x20
cmp dword [rsi + 0x94], 0
cmove ecx, edx
imul rdx, rcx, 0x8421085
shr rdx, 0x20
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub eax, edx
add eax, ecx
or eax, ecx
mov r8, qword [rsi + 0x10]
mov ebp, dword [rsi + 0x28]
lea edx, [rbp + 1]
mov dword [rsi + 0x28], edx
mov rdx, r8
mov byte [rdx + rbp], ch
xor al, 0x1f
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
cmp dword [rsi + 0x94], 0
je 0x140004ac4
mov eax, dword [rdi + 0x4c]
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov r8, qword [rsi + 0x10]
mov ebp, dword [rsi + 0x28]
lea edx, [rbp + 1]
mov dword [rsi + 0x28], edx
mov byte [r8 + rbp], al
mov rax, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rax + rdx], cl
mov eax, dword [rdi + 0x4c]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], ah
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.1400033c0
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140004b25
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x140004b25
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x140004801
mov ecx, dword [rsi + 8]
cmp ecx, 0x39
jne 0x140004642
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0x1f
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0x8b
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 8
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x140005694
cmp dword [rax], 0
setne cl
cmp dword [rax + 0x3c], 0
setne dl
add dl, dl
or dl, cl
cmp qword [rax + 0x10], 0
setne r8b
shl r8b, 2
cmp qword [rax + 0x20], 0
setne cl
shl cl, 3
or cl, r8b
or cl, dl
cmp qword [rax + 0x30], 0
setne al
shl al, 4
or al, cl
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 4]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 5]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 6]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 7]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov ecx, dword [rsi + 0xac]
mov al, 2
cmp ecx, 9
je 0x140004c54
cmp dword [rsi + 0xb0], 1
setg dl
mov al, 4
cmp ecx, 2
jl 0x140004c54
shl dl, 2
mov eax, edx
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 0xc]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
cmp qword [rax + 0x10], 0
je 0x140004cb4
mov al, byte [rax + 0x18]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
mov al, byte [rax + 0x19]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x140004ccd
mov r8d, dword [rsi + 0x28]
mov rdx, qword [rsi + 0x10]
mov ecx, dword [rdi + 0x4c]
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x45
mov rcx, qword [rsi + 0x30]
mov rax, qword [rcx + 0x10]
test rax, rax
je 0x140004d56
mov r15d, dword [rsi + 0x18]
mov r13d, dword [rsi + 0x28]
movzx r14d, word [rcx + 0x18]
mov edx, dword [rsi + 0x38]
sub r14d, edx
lea ecx, [r14 + r13]
cmp ecx, r15d
ja 0x140005382
mov r15d, r13d
mov rcx, qword [rsi + 0x10]
add rcx, r15
mov edx, edx
add rdx, rax
mov r8d, r14d
call sub.VCRUNTIME140.dll_memcpy
add r14d, dword [rsi + 0x28]
mov dword [rsi + 0x28], r14d
cmp r14d, r13d
jbe 0x140004d4f
mov rax, qword [rsi + 0x30]
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x140004d4f
sub r14d, r15d
add r15, qword [rsi + 0x10]
mov ecx, dword [rdi + 0x4c]
mov rdx, r15
mov r8, r14
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x49
mov rax, qword [rsi + 0x30]
cmp qword [rax + 0x20], 0
je 0x140004e62
mov r8d, dword [rsi + 0x28]
mov r9d, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x140004e0c
sub r8d, r9d
jbe 0x140004d9f
mov rcx, qword [rsi + 0x30]
mov ecx, dword [rcx + 0x3c]
test ecx, ecx
je 0x140004d9f
mov edx, r9d
add rdx, qword [rsi + 0x10]
mov ecx, dword [rdi + 0x4c]
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140004dea
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x140004dea
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
xor r8d, r8d
cmp dword [rsi + 0x28], 0
mov r9d, 0
je 0x140004e0c
jmp 0x140004801
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x140004d7d
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x30]
mov rdx, qword [rdx + 0x20]
mov ebp, dword [rsi + 0x38]
lea eax, [rbp + 1]
mov dword [rsi + 0x38], eax
movzx eax, byte [rdx + rbp]
lea edx, [r8 + 1]
mov dword [rsi + 0x28], edx
mov edx, r8d
mov byte [rcx + rdx], al
test al, al
jne 0x140004dfe
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x140004e5b
mov r8d, dword [rsi + 0x28]
sub r8d, r9d
jbe 0x140004e5b
mov edx, r9d
add rdx, qword [rsi + 0x10]
mov ecx, dword [rdi + 0x4c]
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x5b
mov rax, qword [rsi + 0x30]
cmp qword [rax + 0x30], 0
je 0x140004f67
mov r8d, dword [rsi + 0x28]
mov r9d, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x140004f18
sub r8d, r9d
jbe 0x140004eab
mov rcx, qword [rsi + 0x30]
mov ecx, dword [rcx + 0x3c]
test ecx, ecx
je 0x140004eab
mov edx, r9d
add rdx, qword [rsi + 0x10]
mov ecx, dword [rdi + 0x4c]
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140004ef6
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x140004ef6
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
xor r8d, r8d
cmp dword [rsi + 0x28], 0
mov r9d, 0
je 0x140004f18
jmp 0x140004801
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x140004e89
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x30]
mov rdx, qword [rdx + 0x30]
mov ebp, dword [rsi + 0x38]
lea eax, [rbp + 1]
mov dword [rsi + 0x38], eax
movzx eax, byte [rdx + rbp]
lea edx, [r8 + 1]
mov dword [rsi + 0x28], edx
mov edx, r8d
mov byte [rcx + rdx], al
test al, al
jne 0x140004f0a
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
je 0x140004f67
mov r8d, dword [rsi + 0x28]
sub r8d, r9d
jbe 0x140004f67
mov edx, r9d
add rdx, qword [rsi + 0x10]
mov ecx, dword [rdi + 0x4c]
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x67
mov rax, qword [rsi + 0x30]
cmp dword [rax + 0x3c], 0
jne 0x140004fd9
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140004fca
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x140004fca
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x140004801
jmp case.0x140004658.70
mov eax, dword [rsi + 0x28]
lea ecx, [rax + 2]
cmp ecx, dword [rsi + 0x18]
jbe 0x14000503b
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x14000502f
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x14000502f
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x140004801
xor eax, eax
mov cl, byte [rdi + 0x4c]
mov rdx, qword [rsi + 0x10]
lea ebp, [rax + 1]
mov dword [rsi + 0x28], ebp
mov eax, eax
mov byte [rdx + rax], cl
mov al, byte [rdi + 0x4d]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
jmp 0x140004f78
mov rcx, rsi
mov edx, ebx
call fcn.1400058e0
jmp 0x1400046a0
lea r12, [0x14000c480]
mov r9d, dword [rsi + 0x9c]
cmp r9d, 0x103
jae 0x1400050df
mov rcx, rsi
call fcn.140003f80
mov r9d, dword [rsi + 0x9c]
test ebx, ebx
jne 0x1400050ba
cmp r9d, 0x103
jb 0x1400046b8
test r9d, r9d
je 0x14000534e
mov dword [rsi + 0x88], 0
cmp r9d, 2
ja 0x1400050e9
mov r10d, dword [rsi + 0x94]
jmp 0x14000518e
mov dword [rsi + 0x88], 0
mov r10d, dword [rsi + 0x94]
test r10, r10
je 0x14000518b
mov rdx, qword [rsi + 0x50]
mov al, byte [rdx + r10 - 1]
cmp al, byte [rdx + r10]
jne 0x14000518e
add rdx, r10
cmp al, byte [rdx + 1]
jne 0x14000518e
cmp al, byte [rdx + 2]
jne 0x14000518e
lea r8, [rdx + 0x102]
xor ecx, ecx
cmp al, byte [rdx + rcx + 3]
jne 0x14000528d
cmp al, byte [rdx + rcx + 4]
jne 0x140005297
cmp al, byte [rdx + rcx + 5]
jne 0x1400055c4
cmp al, byte [rdx + rcx + 6]
jne 0x1400055d1
cmp al, byte [rdx + rcx + 7]
jne 0x1400055de
cmp al, byte [rdx + rcx + 8]
jne 0x1400055eb
cmp al, byte [rdx + rcx + 9]
jne 0x1400055f8
lea r11, [rcx + 0xa]
lea rbp, [rcx + 8]
cmp r11, 0x101
ja 0x140005605
cmp al, byte [rdx + rcx + 0xa]
mov rcx, rbp
je 0x140005122
jmp 0x140005605
xor r10d, r10d
mov rax, qword [rsi + 0x50]
mov ecx, r10d
movzx eax, byte [rax + rcx]
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 0
mov rcx, qword [rsi + 0x16e8]
mov edx, dword [rsi + 0x16f4]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
add word [rsi + rax*4 + 0xbc], 1
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
add ecx, 0xffffffff
add dword [rsi + 0x9c], 0xffffffff
mov r8d, dword [rsi + 0x94]
add r8d, 1
mov dword [rsi + 0x94], r8d
cmp eax, ecx
jne 0x14000508a
mov edx, dword [rsi + 0x84]
sub r8d, edx
test edx, edx
js 0x140005211
add rdx, qword [rsi + 0x50]
jmp 0x140005213
xor edx, edx
mov rcx, rsi
xor r9d, r9d
call fcn.1400071b0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r13, qword [rsi]
mov r14, qword [r13 + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r13 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x14000527b
mov rcx, qword [r13 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [r13 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r13 + 0x1c], ebp
sub dword [r13 + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x14000527b
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x14000508a
jmp 0x1400046b8
lea rax, [rdx + rcx]
add rax, 3
jmp 0x14000529f
lea rax, [rdx + rcx]
add rax, 4
sub eax, r8d
add eax, 0x102
cmp eax, r9d
cmova eax, r9d
mov dword [rsi + 0x88], eax
cmp eax, 3
jb 0x14000518e
add al, 0xfd
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 1
mov rcx, qword [rsi + 0x16e8]
mov edx, dword [rsi + 0x16f4]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
movzx eax, al
movzx eax, byte [rax + r12]
add word [rsi + rax*4 + 0x4c0], 1
add word [rsi + 0x9b0], 1
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
mov r8d, dword [rsi + 0x88]
sub dword [rsi + 0x9c], r8d
add r8d, dword [rsi + 0x94]
add ecx, 0xffffffff
mov dword [rsi + 0x94], r8d
mov dword [rsi + 0x88], 0
cmp eax, ecx
jne 0x14000508a
jmp 0x1400051fe
test ebx, ebx
je 0x1400046b8
mov dword [rsi + 0x170c], 0
cmp ebx, 4
jne 0x14000544b
mov edx, dword [rsi + 0x84]
mov r8d, dword [rsi + 0x94]
sub r8d, edx
test edx, edx
js 0x140005523
add rdx, qword [rsi + 0x50]
jmp 0x140005525
sub r15d, r13d
mov r12d, r13d
mov rcx, qword [rsi + 0x10]
add rcx, r12
mov edx, edx
add rdx, rax
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
mov r8d, dword [rsi + 0x18]
mov dword [rsi + 0x28], r8d
cmp r8d, r13d
jbe 0x1400053c9
mov rax, qword [rsi + 0x30]
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x1400053c9
sub r8d, r12d
add r12, qword [rsi + 0x10]
mov ecx, dword [rdi + 0x4c]
mov rdx, r12
call fcn.1400037a0
mov dword [rdi + 0x4c], eax
add dword [rsi + 0x38], r15d
mov r12, qword [rdi + 0x28]
mov rcx, r12
call fcn.140006fe0
mov ebp, dword [r12 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x14000541e
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r12 + 0x28], ebp
jne 0x14000541e
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x140004801
sub r14d, r15d
mov r15d, dword [rsi + 0x18]
xor r13d, r13d
mov rax, qword [rsi + 0x30]
mov rax, qword [rax + 0x10]
mov edx, dword [rsi + 0x38]
cmp r14d, r15d
ja 0x140005382
jmp 0x140004d08
cmp dword [rsi + 0x16f4], 0
jne 0x1400055aa
cmp ebx, 5
je 0x1400054c8
mov rcx, rsi
cmp ebx, 1
je 0x14000583f
xor edx, edx
xor r8d, r8d
xor r9d, r9d
call fcn.140006e90
cmp ebx, 3
jne 0x1400054c8
mov rax, qword [rsi + 0x68]
mov ecx, dword [rsi + 0x74]
add ecx, 0xffffffff
mov word [rax + rcx*2], 0
mov rcx, qword [rsi + 0x68]
mov r8d, dword [rsi + 0x74]
add r8d, 0xffffffff
add r8, r8
xor edx, edx
call sub.VCRUNTIME140.dll_memset
cmp dword [rsi + 0x9c], 0
jne 0x1400054c8
mov dword [rsi + 0x94], 0
mov dword [rsi + 0x84], 0
mov dword [rsi + 0x170c], 0
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140005516
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x140005513
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov eax, dword [rdi + 0x18]
test eax, eax
jne 0x1400046f3
jmp 0x140004801
xor edx, edx
mov rcx, rsi
mov r9d, 1
call fcn.1400071b0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140005596
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x140005596
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 1
mov eax, 3
sbb eax, 0
jmp 0x1400046a0
mov edx, dword [rsi + 0x84]
mov r8d, dword [rsi + 0x94]
sub r8d, edx
test edx, edx
js 0x140005612
add rdx, qword [rsi + 0x50]
jmp 0x140005614
lea rax, [rdx + rcx]
add rax, 5
jmp 0x14000529f
lea rax, [rdx + rcx]
add rax, 6
jmp 0x14000529f
lea rax, [rdx + rcx]
add rax, 7
jmp 0x14000529f
lea rax, [rdx + rcx]
add rax, 8
jmp 0x14000529f
lea rax, [rdx + rcx]
add rax, 9
jmp 0x14000529f
lea rax, [rdx + rbp]
add rax, 2
jmp 0x14000529f
xor edx, edx
mov rcx, rsi
xor r9d, r9d
call fcn.1400071b0
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140005682
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x140005682
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
je 0x1400046b8
jmp 0x140005458
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0
mov ecx, dword [rsi + 0xac]
mov al, 2
cmp ecx, 9
je 0x14000570c
cmp dword [rsi + 0xb0], 1
setg dl
mov al, 4
cmp ecx, 2
jl 0x14000570c
shl dl, 2
mov eax, edx
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], 0xa
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.140006fe0
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x14000577f
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [r14 + 0x28], ebp
jne 0x14000577f
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x140004801
mov ecx, dword [rsi + 8]
jmp 0x140004642
mov ecx, eax
shr ecx, 0x10
shr eax, 0x18
mov rdx, qword [rsi + 0x10]
mov ebp, dword [rsi + 0x28]
lea ebx, [rbp + 1]
mov dword [rsi + 0x28], ebx
mov byte [rdx + rbp], al
mov rax, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rax + rdx], cl
mov eax, dword [rdi + 0x4c]
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], ah
mov rcx, qword [rsi + 0x10]
mov edx, dword [rsi + 0x28]
lea ebp, [rdx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rcx + rdx], al
mov rbx, qword [rdi + 0x28]
mov rcx, rbx
call fcn.140006fe0
mov ebp, dword [rbx + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x140005825
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rbx + 0x20]
mov r14d, ebp
mov r8, r14
call sub.VCRUNTIME140.dll_memcpy
add qword [rdi + 0x10], r14
add qword [rbx + 0x20], r14
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
sub dword [rbx + 0x28], ebp
jne 0x140005825
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x140005831
neg eax
mov dword [rsi + 0x2c], eax
xor eax, eax
cmp dword [rsi + 0x28], 0
sete al
jmp 0x140004599
call fcn.140007070
jmp 0x1400054c8