Function at 0x586820
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 ebx, edx
mov rdi, rcx
mov eax, 0xfffffffe
test rdi, rdi
je 0x5872c3
cmp qword [rdi + 0x30], 0
je 0x5872c3
cmp qword [rdi + 0x38], 0
je 0x5872c3
mov rsi, qword [rdi + 0x28]
test rsi, rsi
je 0x5872c3
cmp qword [rsi], rdi
jne 0x5872c3
mov ecx, dword [rsi + 8]
lea edx, [rcx - 0x39]
cmp edx, 0x38
ja 0x5868c4
movabs rbp, 0x100400400011001
bt rbp, rdx
jae 0x5868c4
cmp ebx, 5
ja 0x5872c3
cmp qword [rdi + 0x10], 0
je 0x5868b4
mov ebp, dword [rdi + 8]
test ebp, ebp
je 0x5868a7
cmp qword [rdi], 0
je 0x5868b4
cmp ebx, 4
je 0x5868d6
cmp ecx, 0x29a
jne 0x5868d6
mov rcx, qword [0x0083e760]
mov qword [rdi + 0x20], rcx
jmp 0x5872c3
cmp ecx, 0x29a
je 0x58688a
cmp ecx, 0x2a
je 0x58688a
jmp 0x5872c3
cmp dword [rdi + 0x18], 0
je 0x586cd3
mov edx, dword [rsi + 0x40]
mov dword [rsi + 0x40], ebx
cmp dword [rsi + 0x28], 0
je 0x586ab9
mov rcx, rsi
call fcn.0058e280
mov eax, dword [rsi + 0x28]
mov ecx, dword [rdi + 0x18]
cmp eax, ecx
mov ebp, eax
cmova ebp, ecx
test ebp, ebp
je 0x586943
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rsi + 0x20]
mov r14d, ebp
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r14
add qword [rsi + 0x20], r14
add dword [rdi + 0x1c], ebp
mov ecx, dword [rdi + 0x18]
sub ecx, ebp
mov dword [rdi + 0x18], ecx
mov eax, dword [rsi + 0x28]
sub eax, ebp
mov dword [rsi + 0x28], eax
jne 0x586943
mov rax, qword [rsi + 0x10]
mov qword [rsi + 0x20], rax
xor eax, eax
test ecx, ecx
je 0x5872ba
mov ecx, dword [rsi + 8]
cmp ecx, 0x2a
jne 0x586acc
mov ecx, dword [rsi + 0x48]
shl ecx, 0xc
add ecx, 0xffff8800
xor edx, edx
cmp dword [rsi + 0xb0], 1
jg 0x586990
mov ebp, dword [rsi + 0xac]
cmp ebp, 2
jl 0x586990
mov edx, 0x40
cmp ebp, 6
jl 0x586990
mov ebp, 0x80
mov edx, 0xc0
cmove edx, ebp
or edx, ecx
mov ecx, edx
or ecx, 0x20
cmp dword [rsi + 0x94], 0
cmove ecx, edx
imul rdx, rcx, 0x8421085
shr rdx, 0x20
mov ebp, ecx
sub ebp, edx
shr ebp, 1
add ebp, edx
shr ebp, 4
mov edx, ebp
shl edx, 5
sub edx, ebp
mov ebp, ecx
sub ebp, edx
or ebp, ecx
mov r8, qword [rsi + 0x10]
lea edx, [rax + 1]
mov dword [rsi + 0x28], edx
mov eax, eax
mov rdx, r8
mov byte [rdx + rax], ch
xor bpl, 0x1f
mov rax, qword [rsi + 0x10]
mov ecx, dword [rsi + 0x28]
lea edx, [rcx + 1]
mov dword [rsi + 0x28], edx
mov byte [rax + rcx], bpl
cmp dword [rsi + 0x94], 0
je 0x586a43
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.005906a0
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x586aaa
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x586aaa
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x5872ba
mov ecx, dword [rsi + 8]
jmp 0x586ae3
xor eax, eax
test ebp, ebp
je 0x586c95
cmp ecx, 0x2a
je 0x586957
cmp ecx, 0x29a
jne 0x586ae3
cmp dword [rdi + 8], 0
jne 0x586cd3
jmp 0x5872da
cmp ecx, 0x39
jne 0x586de6
xor ecx, ecx
xor edx, edx
xor r8d, r8d
call fcn.00590b70
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 0x586ce8
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 0x586c05
cmp dword [rsi + 0xb0], 1
setg dl
cmp ecx, 2
mov al, 4
jl 0x586c05
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 0x586c65
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 0x586c7e
mov ecx, dword [rdi + 0x4c]
mov rdx, qword [rsi + 0x10]
mov r8d, dword [rsi + 0x28]
call fcn.00590b70
mov dword [rdi + 0x4c], eax
lea r12, [rsi + 0x30]
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x45
jmp 0x586e06
xor ebp, ebp
cmp ebx, 4
setg r10b
xor r9d, r9d
cmp edx, 4
setg r8b
cmp ebx, 4
je 0x586ac3
lea r11d, [rbx + rbx]
mov bpl, r10b
lea ebp, [rbp + rbp*8]
sub r11d, ebp
add edx, edx
mov r9b, r8b
lea ebp, [r9 + r9*8]
sub edx, ebp
cmp r11d, edx
jg 0x586ac3
mov rax, qword [0x0083e778]
mov qword [rdi + 0x20], rax
mov eax, 0xfffffffb
jmp 0x5872c3
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 0x586d60
cmp dword [rsi + 0xb0], 1
setg dl
cmp ecx, 2
mov al, 4
jl 0x586d60
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.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x586dd9
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x586dd9
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x5872ba
mov ecx, dword [rsi + 8]
add ecx, 0xffffffbb
cmp ecx, 0x22
ja case.0x586e00.70
lea rax, [0x00587b94]
movsxd rcx, dword [rax + rcx*4]
add rcx, rax
jmp rcx
lea r12, [rsi + 0x30]
mov rcx, qword [r12]
mov rax, qword [rcx + 0x10]
test rax, rax
je 0x586f53
mov qword [rsp + 0x20], r12
mov r15d, dword [rsi + 0x18]
mov ebp, dword [rsi + 0x28]
movzx r14d, word [rcx + 0x18]
mov edx, dword [rsi + 0x38]
sub r14d, edx
lea ecx, [rbp + r14]
cmp ecx, r15d
jbe 0x586f03
sub r15d, ebp
mov r12d, ebp
mov rcx, qword [rsi + 0x10]
add rcx, r12
mov edx, edx
add rdx, rax
mov r8, r15
call sub.msvcrt.dll_memcpy
mov r8d, dword [rsi + 0x18]
mov dword [rsi + 0x28], r8d
sub r8d, ebp
jbe 0x586e80
mov rax, qword [rsi + 0x30]
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x586e80
mov ecx, dword [rdi + 0x4c]
add r12, qword [rsi + 0x10]
mov rdx, r12
call fcn.00590b70
mov dword [rdi + 0x4c], eax
add dword [rsi + 0x38], r15d
mov r12, qword [rdi + 0x28]
mov rcx, r12
call fcn.0058e280
mov ebp, dword [r12 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x586edc
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r12 + 0x20]
mov r13d, ebp
mov r8, r13
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r13
add qword [r12 + 0x20], r13
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r12 + 0x28]
sub eax, ebp
mov dword [r12 + 0x28], eax
jne 0x586edc
mov rax, qword [r12 + 0x10]
mov qword [r12 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x5872ba
sub r14d, r15d
mov r15d, dword [rsi + 0x18]
xor ebp, ebp
cmp r14d, r15d
mov rax, qword [rsi + 0x30]
mov rax, qword [rax + 0x10]
mov edx, dword [rsi + 0x38]
ja 0x586e3c
mov r15d, ebp
mov rcx, qword [rsi + 0x10]
add rcx, r15
mov edx, edx
add rdx, rax
mov r8d, r14d
call sub.msvcrt.dll_memcpy
add r14d, dword [rsi + 0x28]
mov dword [rsi + 0x28], r14d
sub r14d, ebp
jbe 0x586f47
mov rax, qword [rsi + 0x30]
mov eax, dword [rax + 0x3c]
test eax, eax
je 0x586f47
mov ecx, dword [rdi + 0x4c]
add r15, qword [rsi + 0x10]
mov rdx, r15
mov r8d, r14d
call fcn.00590b70
mov dword [rdi + 0x4c], eax
mov dword [rsi + 0x38], 0
mov r12, qword [rsp + 0x20]
mov dword [rsi + 8], 0x49
mov rax, qword [r12]
cmp qword [rax + 0x20], 0
jne 0x586f7d
jmp 0x587079
lea r12, [rsi + 0x30]
mov rax, qword [r12]
cmp qword [rax + 0x20], 0
je 0x587079
mov r8d, dword [rsi + 0x28]
mov r9d, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x587023
sub r8d, r9d
jbe 0x586fb0
mov rcx, qword [r12]
mov ecx, dword [rcx + 0x3c]
test ecx, ecx
je 0x586fb0
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00590b70
mov dword [rdi + 0x4c], eax
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x587001
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x587001
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
xor r8d, r8d
cmp dword [rsi + 0x28], 0
mov r9d, 0
je 0x587023
jmp 0x5872ba
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x586f8e
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 0x587015
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
je 0x587072
mov r8d, dword [rsi + 0x28]
sub r8d, r9d
jbe 0x587072
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00590b70
mov dword [rdi + 0x4c], eax
mov dword [rsi + 0x38], 0
mov dword [rsi + 8], 0x5b
mov rax, qword [r12]
cmp qword [rax + 0x30], 0
jne 0x5870a3
jmp 0x587198
lea r12, [rsi + 0x30]
mov rax, qword [r12]
cmp qword [rax + 0x30], 0
je 0x587198
mov r8d, dword [rsi + 0x28]
mov r9d, r8d
cmp r8d, dword [rsi + 0x18]
jne 0x587149
sub r8d, r9d
jbe 0x5870d6
mov rcx, qword [r12]
mov ecx, dword [rcx + 0x3c]
test ecx, ecx
je 0x5870d6
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00590b70
mov dword [rdi + 0x4c], eax
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x587127
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x587127
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
xor r8d, r8d
cmp dword [rsi + 0x28], 0
mov r9d, 0
je 0x587149
jmp 0x5872ba
mov r8d, dword [rsi + 0x28]
cmp r8d, dword [rsi + 0x18]
je 0x5870b4
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 0x58713b
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
je 0x587198
mov r8d, dword [rsi + 0x28]
sub r8d, r9d
jbe 0x587198
mov ecx, dword [rdi + 0x4c]
mov edx, r9d
add rdx, qword [rsi + 0x10]
call fcn.00590b70
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x67
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
jne 0x5871c0
jmp 0x58725c
lea r12, [rsi + 0x30]
mov rax, qword [r12]
cmp dword [rax + 0x3c], 0
je 0x58725c
mov eax, dword [rsi + 0x28]
lea ecx, [rax + 2]
cmp ecx, dword [rsi + 0x18]
jbe 0x587228
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x58721c
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x58721c
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
jne 0x5872ba
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.00590b70
mov dword [rdi + 0x4c], eax
mov dword [rsi + 8], 0x71
mov r14, qword [rdi + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x5872b4
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x5872b4
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
cmp dword [rsi + 0x28], 0
je case.0x586e00.70
mov dword [rsi + 0x40], 0xffffffff
xor eax, eax
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp dword [rdi + 8], 0
jne 0x5872e7
cmp dword [rsi + 0x9c], 0
je 0x58744d
movsxd rbp, dword [rsi + 0xac]
test rbp, rbp
je 0x58743e
mov eax, dword [rsi + 0xb0]
cmp eax, 3
je 0x587467
cmp eax, 2
jne 0x587765
cmp dword [rsi + 0x9c], 0
jne 0x58732d
mov rcx, rsi
call fcn.00585b40
cmp dword [rsi + 0x9c], 0
je 0x58777e
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]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
inc word [rsi + rax*4 + 0xbc]
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
dec ecx
dec dword [rsi + 0x9c]
mov r8d, dword [rsi + 0x94]
inc r8d
cmp eax, ecx
mov dword [rsi + 0x94], r8d
jne 0x58730f
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x5873b3
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x5873b5
xor edx, edx
sub r8d, eax
xor r9d, r9d
mov rcx, rsi
call fcn.0058e490
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x58742c
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x58742c
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x58730f
jmp 0x587876
mov rcx, rsi
mov edx, ebx
call fcn.00587e10
jmp 0x58785b
test ebx, ebx
je 0x587961
cmp dword [rsi + 8], 0x29a
jne 0x5872e7
jmp 0x587961
lea r12, [0x0083bce0]
jmp 0x587728
test r11d, r11d
je 0x5877a7
mov dword [rsi + 0x88], 0
cmp r11d, 2
ja 0x5874a1
mov ecx, dword [rsi + 0x94]
jmp 0x58755b
mov dword [rsi + 0x88], 0
mov ecx, dword [rsi + 0x94]
test rcx, rcx
je 0x587559
mov rbp, qword [rsi + 0x50]
mov dl, byte [rbp + rcx - 1]
cmp dl, byte [rbp + rcx]
jne 0x58755b
add rbp, rcx
cmp dl, byte [rbp + 1]
jne 0x58755b
cmp dl, byte [rbp + 2]
jne 0x58755b
lea r8, [rbp + 0x102]
xor eax, eax
mov r10d, 2
cmp dl, byte [rbp + rax + 3]
jne 0x587658
lea r9, [rbp + r10]
cmp dl, byte [rbp + rax + 4]
jne 0x58765f
cmp dl, byte [rbp + rax + 5]
jne 0x587665
cmp dl, byte [rbp + rax + 6]
jne 0x58766b
cmp dl, byte [rbp + rax + 7]
jne 0x587671
cmp dl, byte [rbp + rax + 8]
jne 0x587677
cmp dl, byte [rbp + rax + 9]
jne 0x58767d
lea r14, [rax + 2]
lea r9, [rax + 8]
cmp r14, 0xf9
ja 0x58754f
add r10, 8
cmp dl, byte [rbp + rax + 0xa]
mov rax, r9
je 0x5874e6
lea r9, [rbp + r9 + 2]
jmp 0x587681
xor ecx, ecx
mov rax, qword [rsi + 0x50]
mov ecx, ecx
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]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
inc word [rsi + rax*4 + 0xbc]
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
dec ecx
dec dword [rsi + 0x9c]
mov r8d, dword [rsi + 0x94]
inc r8d
cmp eax, ecx
mov dword [rsi + 0x94], r8d
jne 0x587728
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x5875d3
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x5875d5
xor edx, edx
sub r8d, eax
xor r9d, r9d
mov rcx, rsi
call fcn.0058e490
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r13, qword [rsi]
mov r14, qword [r13 + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [r13 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x587646
mov rcx, qword [r13 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r13 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r13 + 0x1c], ebp
sub dword [r13 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x587646
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x587728
jmp 0x587876
lea r9, [rbp + r10 + 1]
jmp 0x587681
add r9, 2
jmp 0x587681
add r9, 3
jmp 0x587681
add r9, 4
jmp 0x587681
add r9, 5
jmp 0x587681
add r9, 6
jmp 0x587681
add r9, 7
sub r8d, r9d
mov eax, 0x102
sub eax, r8d
cmp eax, r11d
cmova eax, r11d
mov dword [rsi + 0x88], eax
cmp eax, 3
jb 0x58755b
add eax, 0xfd
mov rcx, qword [rsi + 0x16f8]
mov edx, dword [rsi + 0x16f4]
mov word [rcx + rdx*2], 1
mov rcx, qword [rsi + 0x16e8]
lea ebp, [rdx + 1]
mov dword [rsi + 0x16f4], ebp
mov byte [rcx + rdx], al
movzx eax, al
movzx eax, byte [rax + r12]
inc word [rsi + rax*4 + 0x4c0]
movzx eax, byte [0x0083bae0]
inc word [rsi + rax*4 + 0x9b0]
mov eax, dword [rsi + 0x16f4]
mov ecx, dword [rsi + 0x16f0]
dec ecx
mov r8d, dword [rsi + 0x88]
sub dword [rsi + 0x9c], r8d
add r8d, dword [rsi + 0x94]
cmp eax, ecx
mov dword [rsi + 0x94], r8d
mov dword [rsi + 0x88], 0
je 0x5875c0
mov r11d, dword [rsi + 0x9c]
cmp r11d, 0x103
jae 0x587497
mov rcx, rsi
call fcn.00585b40
test ebx, ebx
mov r11d, dword [rsi + 0x9c]
jne 0x587473
cmp r11d, 0x103
jae 0x587473
jmp 0x587876
shl rbp, 4
lea rax, [0x0083ac20]
mov rcx, rsi
mov edx, ebx
call qword [rbp + rax + 8]
jmp 0x58785b
test ebx, ebx
je 0x587876
mov dword [rsi + 0x170c], 0
cmp ebx, 4
jne 0x587aeb
mov eax, dword [rsi + 0x84]
test eax, eax
jns 0x5877c4
xor edx, edx
jmp 0x5877cb
mov dword [rsi + 0x170c], 0
cmp ebx, 4
jne 0x587acb
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x5877a3
mov rdx, qword [rsi + 0x50]
add rdx, rax
mov r8d, dword [rsi + 0x94]
sub r8d, eax
mov r9d, 1
mov rcx, rsi
call fcn.0058e490
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x58784c
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x58784c
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
mov ecx, eax
or ecx, 1
cmp ecx, 3
jne 0x58786c
mov dword [rsi + 8], 0x29a
mov ecx, eax
or ecx, 2
cmp ecx, 2
jne 0x58788e
xor eax, eax
cmp dword [rdi + 0x18], 0
jne 0x5872c3
mov dword [rsi + 0x40], 0xffffffff
jmp 0x5872c3
cmp eax, 1
jne 0x587961
cmp ebx, 5
je 0x587903
cmp ebx, 1
jne 0x5878ab
mov rcx, rsi
call fcn.0058e310
jmp 0x587903
xor edx, edx
xor r8d, r8d
xor r9d, r9d
mov rcx, rsi
call fcn.0058e130
cmp ebx, 3
jne 0x587903
mov rcx, qword [rsi + 0x68]
mov r8d, dword [rsi + 0x74]
dec r8d
mov word [rcx + r8*2], 0
add r8, r8
xor edx, edx
call sub.msvcrt.dll_memset
cmp dword [rsi + 0x9c], 0
jne 0x587903
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.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x587959
mov rcx, qword [rdi + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r15
add qword [r14 + 0x20], r15
add dword [rdi + 0x1c], ebp
mov eax, dword [rdi + 0x18]
sub eax, ebp
mov dword [rdi + 0x18], eax
mov ecx, dword [r14 + 0x28]
sub ecx, ebp
mov dword [r14 + 0x28], ecx
jne 0x587959
mov rcx, qword [r14 + 0x10]
mov qword [r14 + 0x20], rcx
test eax, eax
je 0x5872ba
xor eax, eax
cmp ebx, 4
jne 0x5872c3
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x587a0b
cmp eax, 2
mov eax, dword [rdi + 0x4c]
jne 0x587a15
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 0x587a53
mov eax, 1
jmp 0x5872c3
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 ecx, dword [rdi + 0x4c]
movzx eax, cx
mov rdx, qword [rsi + 0x10]
mov ebx, dword [rsi + 0x28]
lea ebp, [rbx + 1]
mov dword [rsi + 0x28], ebp
mov byte [rdx + rbx], ch
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.0058e280
mov ebp, dword [rbx + 0x28]
mov eax, dword [rdi + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x587ab1
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rbx + 0x20]
mov r14d, ebp
mov r8, r14
call sub.msvcrt.dll_memcpy
add qword [rdi + 0x10], r14
add qword [rbx + 0x20], r14
add dword [rdi + 0x1c], ebp
sub dword [rdi + 0x18], ebp
mov eax, dword [rbx + 0x28]
sub eax, ebp
mov dword [rbx + 0x28], eax
jne 0x587ab1
mov rax, qword [rbx + 0x10]
mov qword [rbx + 0x20], rax
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x587abd
neg eax
mov dword [rsi + 0x2c], eax
xor eax, eax
cmp dword [rsi + 0x28], 0
sete al
jmp 0x5872c3
cmp dword [rsi + 0x16f4], 0
je 0x587897
mov eax, dword [rsi + 0x84]
test eax, eax
js 0x587b02
mov rdx, qword [rsi + 0x50]
add rdx, rax
jmp 0x587b04
cmp dword [rsi + 0x16f4], 0
je 0x587897
mov eax, dword [rsi + 0x84]
test eax, eax
jns 0x587ae2
xor edx, edx
mov r8d, dword [rsi + 0x94]
sub r8d, eax
xor r9d, r9d
mov rcx, rsi
call fcn.0058e490
mov eax, dword [rsi + 0x94]
mov dword [rsi + 0x84], eax
mov r12, qword [rsi]
mov r14, qword [r12 + 0x28]
mov rcx, r14
call fcn.0058e280
mov ebp, dword [r14 + 0x28]
mov eax, dword [r12 + 0x18]
cmp ebp, eax
cmova ebp, eax
test ebp, ebp
je 0x587b82
mov rcx, qword [r12 + 0x10]
mov rdx, qword [r14 + 0x20]
mov r15d, ebp
mov r8, r15
call sub.msvcrt.dll_memcpy
add qword [r12 + 0x10], r15
add qword [r14 + 0x20], r15
add dword [r12 + 0x1c], ebp
sub dword [r12 + 0x18], ebp
mov eax, dword [r14 + 0x28]
sub eax, ebp
mov dword [r14 + 0x28], eax
jne 0x587b82
mov rax, qword [r14 + 0x10]
mov qword [r14 + 0x20], rax
mov rax, qword [rsi]
cmp dword [rax + 0x18], 0
jne 0x587897
jmp 0x587876