Function at 0x4c8440
Capabilities:
Compress data via zlib inflate or deflate

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov edi, edx
mov rsi, rcx
call fcn.004c7bf0
test eax, eax
mov dword [rsp + 0x2c], eax
jne 0x4c9206
cmp edi, 5
ja 0x4c9206
mov rax, qword [rcx + 0x28]
cmp qword [rcx + 0x10], 0
mov qword [rsp + 0x20], rax
je 0x4c91f7
mov edx, dword [rcx + 8]
test edx, edx
je 0x4c8494
cmp qword [rcx], 0
je 0x4c91f7
mov rax, qword [rsp + 0x20]
cmp edi, 4
setne cl
mov eax, dword [rax + 8]
cmp eax, 0x29a
jne 0x4c84b1
test cl, cl
jne 0x4c91f7
mov r12d, dword [rsi + 0x18]
test r12d, r12d
je 0x4c9213
mov rbx, qword [rsp + 0x20]
mov ebp, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x40]
mov dword [rbx + 0x40], edi
test ebp, ebp
jne 0x4c87a8
test edx, edx
je 0x4c86a0
cmp eax, 0x29a
je 0x4c9213
cmp eax, 0x2a
jne 0x4c85b0
mov rdx, qword [rsp + 0x20]
mov eax, dword [rdx + 0x48]
shl eax, 0xc
sub eax, 0x7800
cmp dword [rdx + 0xb0], 1
jle 0x4c8ab8
mov rdx, qword [rsp + 0x20]
mov r10d, dword [rdx + 0x94]
test r10d, r10d
je 0x4c8522
or eax, 0x20
mov edx, eax
mov r11, qword [rsp + 0x20]
imul rdx, rdx, 0x8421085
mov rcx, qword [r11 + 0x10]
shr rdx, 0x20
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
mov edx, eax
shl edx, 5
sub edx, eax
lea eax, [rdx + 0x1f]
mov edx, dword [r11 + 0x28]
lea r8d, [rdx + 1]
mov dword [r11 + 0x28], r8d
mov byte [rcx + rdx], ah
mov edx, dword [r11 + 0x28]
mov rcx, qword [r11 + 0x10]
lea r8d, [rdx + 1]
mov dword [r11 + 0x28], r8d
mov byte [rcx + rdx], al
mov r9d, dword [r11 + 0x94]
test r9d, r9d
jne 0x4c8ae0
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.004cf1f0
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x71
call fcn.004c6c20
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x4c8783
mov eax, dword [rbx + 8]
cmp eax, 0x39
je 0x4c8cf8
cmp eax, 0x45
jne 0x4c87c8
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
mov rdx, qword [rcx + 0x10]
test rdx, rdx
je 0x4c8b8a
mov rbx, qword [rsp + 0x20]
movzx r14d, word [rcx + 0x18]
mov eax, dword [rbx + 0x38]
mov r12d, dword [rbx + 0x28]
mov r13d, dword [rbx + 0x18]
sub r14d, eax
lea ecx, [r12 + r14]
cmp r13d, ecx
jb 0x4c8644
jmp 0x4c95d1
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
add dword [rbx + 0x38], r15d
call fcn.004c6c20
mov r15d, dword [rbx + 0x28]
test r15d, r15d
jne 0x4c8783
mov rcx, qword [rsp + 0x20]
sub r12d, r13d
add r14d, r12d
mov r13d, dword [rcx + 0x18]
mov rax, qword [rcx + 0x30]
cmp r13d, r14d
mov rdx, qword [rax + 0x10]
mov eax, dword [rcx + 0x38]
jae 0x4c8b48
xor r12d, r12d
mov rbx, qword [rsp + 0x20]
mov ebp, r12d
mov r15d, r13d
add rdx, rax
mov rcx, rbp
sub r15d, r12d
mov r8d, r15d
add rcx, qword [rbx + 0x10]
call sub.msvcrt.dll_memcpy
mov rax, qword [rbx + 0x30]
mov r8d, dword [rbx + 0x18]
mov eax, dword [rax + 0x3c]
mov dword [rbx + 0x28], r8d
test eax, eax
je 0x4c8600
cmp r12d, r8d
jae 0x4c8600
mov rax, qword [rsp + 0x20]
mov rdx, rbp
sub r8d, r12d
mov ecx, dword [rsi + 0x4c]
add rdx, qword [rax + 0x10]
call fcn.004cf7e0
mov dword [rsi + 0x4c], eax
jmp 0x4c8600
lea r9d, [rdi + rdi]
cmp edi, 5
mov edx, 1
cmove r9d, edx
cmp r8d, 4
lea edx, [r8 + r8]
lea r10d, [rdx - 9]
cmovg edx, r10d
cmp r9d, edx
jg 0x4c86cd
test cl, cl
jne 0x4c9213
cmp eax, 0x29a
jne 0x4c84e8
mov r11d, dword [rsi + 8]
test r11d, r11d
jne 0x4c9213
mov ebx, dword [rsi + 8]
test ebx, ebx
jne 0x4c8701
mov rax, qword [rsp + 0x20]
mov r11d, dword [rax + 0x9c]
test r11d, r11d
je 0x4c8990
mov rax, qword [rsp + 0x20]
movsxd rax, dword [rax + 0xac]
test eax, eax
je 0x4c8ee8
mov rdx, qword [rsp + 0x20]
mov edx, dword [rdx + 0xb0]
cmp edx, 2
je 0x4c8840
cmp edx, 3
je 0x4c9020
shl rax, 4
mov edx, edi
mov rcx, qword [rsp + 0x20]
lea r8, [0x00560e00]
call qword [r8 + rax + 8]
lea edx, [rax - 2]
cmp edx, 1
jbe 0x4c8ec8
test eax, eax
je 0x4c877c
cmp eax, 1
jne 0x4c89a8
cmp edi, 1
je 0x4c95b1
cmp edi, 5
jne 0x4c9140
mov rcx, rsi
call fcn.004c6c20
mov ecx, dword [rsi + 0x18]
test ecx, ecx
jne 0x4c878f
mov rax, qword [rsp + 0x20]
mov dword [rax + 0x40], 0xffffffff
mov eax, dword [rsp + 0x2c]
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rsi
call fcn.004c6c20
mov ebx, dword [rsi + 0x18]
mov rax, qword [rsp + 0x20]
test ebx, ebx
je 0x4c8788
mov eax, dword [rax + 8]
jmp 0x4c86cd
cmp eax, 0x49
je 0x4c9010
cmp eax, 0x5b
je 0x4c9546
cmp eax, 0x67
jne 0x4c86e5
mov rax, qword [rsp + 0x20]
mov rax, qword [rax + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x4c8f7f
mov eax, dword [rcx + 0x84]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x4c880e
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.004ce6a0
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.004c6c20
mov rax, qword [rbx]
mov eax, dword [rax + 0x18]
test eax, eax
je 0x4c877c
mov rax, qword [rsp + 0x20]
mov eax, dword [rax + 0x9c]
jmp 0x4c88da
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov ecx, dword [rbx + 0x16f4]
mov dword [rbx + 0x88], 0
mov rdx, qword [rbx + 0x50]
mov eax, dword [rbx + 0x94]
mov r8, qword [rbx + 0x16f8]
movzx eax, byte [rdx + rax]
mov rdx, rcx
mov word [r8 + rcx*2], r9w
mov r8, qword [rbx + 0x16e8]
add edx, 1
mov dword [rbx + 0x16f4], edx
mov byte [r8 + rcx], al
mov rcx, rbx
add word [rbx + rax*4 + 0xbc], 1
mov eax, dword [rbx + 0x16f0]
lea edx, [rax - 1]
mov eax, dword [rbx + 0x9c]
sub eax, 1
cmp dword [rcx + 0x16f4], edx
mov dword [rbx + 0x9c], eax
mov ebx, dword [rbx + 0x94]
lea r8d, [rbx + 1]
mov dword [rcx + 0x94], r8d
je 0x4c87f8
test eax, eax
jne 0x4c8850
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.004c69a0
mov r10d, dword [rbx + 0x9c]
test r10d, r10d
jne 0x4c8850
test edi, edi
je 0x4c877c
mov rax, qword [rsp + 0x20]
cmp edi, 4
mov dword [rax + 0x170c], 0
je 0x4c9554
mov rax, qword [rsp + 0x20]
mov eax, dword [rax + 0x16f4]
test eax, eax
je 0x4c8762
mov rcx, qword [rsp + 0x20]
mov eax, dword [rcx + 0x84]
xor edx, edx
mov r8d, dword [rcx + 0x94]
sub r8d, eax
test eax, eax
js 0x4c8954
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.004ce6a0
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.004c6c20
mov rax, qword [rbx]
mov r10d, dword [rax + 0x18]
test r10d, r10d
jne 0x4c8762
jmp 0x4c877c
test edi, edi
je 0x4c878f
cmp dword [rax + 8], 0x29a
jne 0x4c8701
nop dword [rax]
cmp edi, 4
jne 0x4c878f
mov rax, qword [rsp + 0x20]
mov dword [rsp + 0x2c], 1
mov edx, dword [rax + 0x2c]
test edx, edx
jle 0x4c878f
mov rdi, qword [rsp + 0x20]
mov ecx, dword [rsi + 0x4c]
mov eax, dword [rdi + 0x28]
lea r8d, [rax + 1]
add rax, qword [rdi + 0x10]
cmp edx, 2
jne 0x4c93d0
mov dword [rdi + 0x28], r8d
mov byte [rax], cl
mov eax, dword [rdi + 0x28]
mov ecx, dword [rsi + 0x4c]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], ch
mov eax, dword [rdi + 0x28]
movzx ecx, word [rsi + 0x4e]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], cl
mov eax, dword [rdi + 0x28]
movzx ecx, byte [rsi + 0x4f]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], cl
mov eax, dword [rdi + 0x28]
mov ecx, dword [rsi + 0xc]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], cl
mov eax, dword [rdi + 0x28]
mov ecx, dword [rsi + 0xc]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], ch
mov eax, dword [rdi + 0x28]
movzx ecx, word [rsi + 0xe]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], cl
movzx ecx, byte [rsi + 0xf]
mov eax, dword [rdi + 0x28]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], cl
mov rcx, rsi
call fcn.004c6c20
mov rsi, qword [rsp + 0x20]
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x4c8a9b
neg eax
mov dword [rsi + 0x2c], eax
mov rax, qword [rsp + 0x20]
mov eax, dword [rax + 0x28]
test eax, eax
sete al
movzx eax, al
mov dword [rsp + 0x2c], eax
jmp 0x4c878f
mov edx, dword [rdx + 0xac]
cmp edx, 1
jle 0x4c850e
cmp edx, 5
jg 0x4c9178
or eax, 0x40
jmp 0x4c850e
mov eax, dword [r11 + 0x28]
mov edx, dword [rsi + 0x4c]
mov rcx, qword [r11 + 0x10]
lea r8d, [rax + 1]
mov dword [r11 + 0x28], r8d
mov r8d, edx
shr edx, 0x10
shr r8d, 0x18
mov byte [rcx + rax], r8b
mov eax, dword [r11 + 0x28]
mov rcx, qword [r11 + 0x10]
lea r8d, [rax + 1]
mov dword [r11 + 0x28], r8d
mov byte [rcx + rax], dl
mov eax, dword [r11 + 0x28]
movzx edx, word [rsi + 0x4c]
mov rcx, qword [r11 + 0x10]
lea r8d, [rax + 1]
mov dword [r11 + 0x28], r8d
mov byte [rcx + rax], dh
mov eax, dword [r11 + 0x28]
mov rcx, qword [r11 + 0x10]
lea r8d, [rax + 1]
mov dword [r11 + 0x28], r8d
mov byte [rcx + rax], dl
jmp 0x4c857d
xor r13d, r13d
mov rbx, qword [rsp + 0x20]
mov rcx, r13
add rdx, rax
mov r8d, r14d
add rcx, qword [rbx + 0x10]
call sub.msvcrt.dll_memcpy
mov rcx, qword [rbx + 0x30]
add r14d, dword [rbx + 0x28]
mov eax, dword [rcx + 0x3c]
mov dword [rbx + 0x28], r14d
test eax, eax
je 0x4c8b7e
cmp r15d, r14d
jb 0x4c91d1
mov rax, qword [rsp + 0x20]
mov dword [rax + 0x38], 0
mov rax, qword [rsp + 0x20]
mov dword [rax + 8], 0x49
cmp qword [rcx + 0x20], 0
je 0x4c8c53
mov rax, qword [rsp + 0x20]
mov r9d, dword [rax + 0x28]
mov r8d, r9d
jmp 0x4c8be1
mov rbx, qword [rsp + 0x20]
mov rdx, qword [rcx + 0x20]
mov eax, dword [rbx + 0x38]
lea ecx, [rax + 1]
mov dword [rbx + 0x38], ecx
movzx eax, byte [rdx + rax]
lea ecx, [r8 + 1]
mov rdx, qword [rbx + 0x10]
mov dword [rbx + 0x28], ecx
test al, al
mov byte [rdx + r8], al
je 0x4c8c28
mov r8d, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x30]
mov rax, qword [rsp + 0x20]
cmp dword [rax + 0x18], r8d
jne 0x4c8bb0
mov r15d, dword [rcx + 0x3c]
test r15d, r15d
je 0x4c8bfe
cmp r9d, r8d
jb 0x4c8f00
mov rcx, rsi
call fcn.004c6c20
mov rax, qword [rsp + 0x20]
mov r8d, dword [rax + 0x28]
test r8d, r8d
jne 0x4c8783
mov rcx, qword [rax + 0x30]
xor r9d, r9d
jmp 0x4c8bb0
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
mov r14d, dword [rcx + 0x3c]
test r14d, r14d
je 0x4c8c47
mov r8d, dword [rax + 0x28]
cmp r9d, r8d
jb 0x4c918a
mov rax, qword [rsp + 0x20]
mov dword [rax + 0x38], 0
mov rax, qword [rsp + 0x20]
mov dword [rax + 8], 0x5b
cmp qword [rcx + 0x30], 0
je 0x4c8f70
mov rax, qword [rsp + 0x20]
mov r9d, dword [rax + 0x28]
mov r8d, r9d
jmp 0x4c8cb5
mov rbx, qword [rsp + 0x20]
mov rdx, qword [rcx + 0x30]
mov eax, dword [rbx + 0x38]
lea ecx, [rax + 1]
mov dword [rbx + 0x38], ecx
movzx eax, byte [rdx + rax]
lea ecx, [r8 + 1]
mov rdx, qword [rbx + 0x10]
mov dword [rbx + 0x28], ecx
test al, al
mov byte [rdx + r8], al
je 0x4c8f40
mov r8d, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x30]
mov rax, qword [rsp + 0x20]
cmp dword [rax + 0x18], r8d
jne 0x4c8c80
mov r13d, dword [rcx + 0x3c]
test r13d, r13d
je 0x4c8cd2
cmp r9d, r8d
jb 0x4c8f20
mov rcx, rsi
call fcn.004c6c20
mov rax, qword [rsp + 0x20]
mov r8d, dword [rax + 0x28]
test r8d, r8d
jne 0x4c8783
mov rcx, qword [rax + 0x30]
xor r9d, r9d
jmp 0x4c8c80
xor edx, edx
xor ecx, ecx
xor r8d, r8d
call fcn.004cf7e0
mov rbx, qword [rsp + 0x20]
mov dword [rsi + 0x4c], eax
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0x1f
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0x8b
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 8
mov rax, qword [rbx + 0x30]
test rax, rax
je 0x4c9428
mov edx, dword [rax + 0x3c]
mov r10, qword [rsp + 0x20]
test edx, edx
setne cl
cmp qword [rax + 0x10], 0
mov r9, qword [r10 + 0x10]
setne dl
shl edx, 2
cmp dword [rax], 1
lea ecx, [rdx + rcx*2]
sbb cl, 0xff
cmp qword [rax + 0x20], 0
setne dl
cmp qword [rax + 0x30], 0
mov eax, dword [r10 + 0x28]
lea edx, [rcx + rdx*8]
setne r8b
lea ecx, [rax + 1]
shl r8d, 4
mov dword [r10 + 0x28], ecx
mov ecx, eax
lea eax, [rdx + r8]
mov byte [r9 + rcx], al
mov rax, qword [r10 + 0x30]
mov rdx, qword [r10 + 0x10]
mov ecx, dword [rax + 4]
mov eax, dword [r10 + 0x28]
lea r8d, [rax + 1]
mov dword [r10 + 0x28], r8d
mov byte [rdx + rax], cl
mov rax, qword [r10 + 0x30]
mov rdx, qword [r10 + 0x10]
mov ecx, dword [rax + 4]
mov eax, dword [r10 + 0x28]
lea r8d, [rax + 1]
mov dword [r10 + 0x28], r8d
mov byte [rdx + rax], ch
mov rax, qword [r10 + 0x30]
mov rdx, qword [r10 + 0x10]
movzx ecx, word [rax + 6]
mov eax, dword [r10 + 0x28]
lea r8d, [rax + 1]
mov dword [r10 + 0x28], r8d
mov byte [rdx + rax], cl
mov rax, qword [r10 + 0x30]
mov rdx, qword [r10 + 0x10]
movzx ecx, byte [rax + 7]
mov eax, dword [r10 + 0x28]
lea r8d, [rax + 1]
mov dword [r10 + 0x28], r8d
mov byte [rdx + rax], cl
mov edx, dword [r10 + 0xac]
mov eax, 2
cmp edx, 9
je 0x4c8e2f
cmp dword [r10 + 0xb0], 1
setg al
cmp edx, 1
setle dl
or eax, edx
shl eax, 2
mov r14, qword [rsp + 0x20]
mov edx, dword [r14 + 0x28]
mov rcx, qword [r14 + 0x10]
lea r8d, [rdx + 1]
mov dword [r14 + 0x28], r8d
mov byte [rcx + rdx], al
mov rax, qword [r14 + 0x30]
mov rdx, qword [r14 + 0x10]
mov ecx, dword [rax + 0xc]
mov eax, dword [r14 + 0x28]
lea r8d, [rax + 1]
mov dword [r14 + 0x28], r8d
mov byte [rdx + rax], cl
mov rcx, qword [r14 + 0x30]
cmp qword [rcx + 0x10], 0
je 0x4c8ea0
mov eax, dword [r14 + 0x28]
mov ecx, dword [rcx + 0x18]
mov rdx, qword [r14 + 0x10]
lea r8d, [rax + 1]
mov dword [r14 + 0x28], r8d
mov byte [rdx + rax], cl
mov rax, qword [r14 + 0x30]
mov rdx, qword [r14 + 0x10]
mov ecx, dword [rax + 0x18]
mov eax, dword [r14 + 0x28]
lea r8d, [rax + 1]
mov dword [r14 + 0x28], r8d
mov byte [rdx + rax], ch
mov rcx, qword [r14 + 0x30]
mov eax, dword [rcx + 0x3c]
test eax, eax
jne 0x4c94f0
mov rax, qword [rsp + 0x20]
mov dword [rax + 0x38], 0
mov dword [rax + 8], 0x45
jmp 0x4c85cb
mov rdx, qword [rsp + 0x20]
cmp eax, 2
mov dword [rdx + 8], 0x29a
jne 0x4c89a8
jmp 0x4c877c
mov rcx, qword [rsp + 0x20]
mov edx, edi
call fcn.004c76a0
lea edx, [rax - 2]
jmp 0x4c874c
mov edx, r9d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
add rdx, qword [rax + 0x10]
call fcn.004cf7e0
mov dword [rsi + 0x4c], eax
jmp 0x4c8bfe
mov edx, r9d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
add rdx, qword [rax + 0x10]
call fcn.004cf7e0
mov dword [rsi + 0x4c], eax
jmp 0x4c8cd2
mov rdx, qword [rsp + 0x20]
mov rax, qword [rdx + 0x30]
mov r12d, dword [rax + 0x3c]
test r12d, r12d
je 0x4c8fea
mov r8d, dword [rdx + 0x28]
cmp r9d, r8d
jb 0x4c91ab
mov dword [rdx + 8], 0x67
jmp 0x4c8f8c
mov eax, dword [rcx + 0x3c]
mov rdx, qword [rsp + 0x20]
mov dword [rdx + 8], 0x67
test eax, eax
je 0x4c8fea
mov rax, qword [rsp + 0x20]
mov r8d, dword [rax + 0x28]
mov rbx, qword [rsp + 0x20]
lea eax, [r8 + 2]
cmp dword [rbx + 0x18], eax
jae 0x4c8faf
mov rcx, rsi
call fcn.004c6c20
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x4c8783
mov rbx, qword [rsp + 0x20]
lea ecx, [r8 + 1]
mov edx, dword [rsi + 0x4c]
mov rax, qword [rbx + 0x10]
mov dword [rbx + 0x28], ecx
mov byte [rax + r8], dl
mov eax, dword [rbx + 0x28]
mov ecx, dword [rsi + 0x4c]
mov rdx, qword [rbx + 0x10]
lea r8d, [rax + 1]
mov dword [rbx + 0x28], r8d
xor r8d, r8d
mov byte [rdx + rax], ch
xor edx, edx
xor ecx, ecx
call fcn.004cf7e0
mov dword [rsi + 0x4c], eax
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
mov dword [rbx + 8], 0x71
call fcn.004c6c20
mov ebp, dword [rbx + 0x28]
test ebp, ebp
je 0x4c86e5
jmp 0x4c8783
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
jmp 0x4c8b96
mov r13, qword [0x00568420]
mov r12, qword [0x005683d0]
jmp 0x4c90c7
mov dword [rax + 0x88], 0
mov eax, dword [rcx + 0x94]
mov r8, qword [rcx + 0x50]
mov ecx, eax
test eax, eax
je 0x4c9065
lea rax, [r8 + rcx - 1]
movzx r9d, byte [rax]
cmp r9b, byte [rax + 1]
je 0x4c9230
mov rbx, qword [rsp + 0x20]
xor r14d, r14d
movzx eax, byte [r8 + rcx]
mov ecx, dword [rbx + 0x16f4]
mov r8, qword [rbx + 0x16f8]
mov rdx, rcx
mov word [r8 + rcx*2], r14w
mov r8, qword [rbx + 0x16e8]
add edx, 1
mov dword [rbx + 0x16f4], edx
mov byte [r8 + rcx], al
add word [rbx + rax*4 + 0xbc], 1
mov eax, dword [rbx + 0x16f0]
sub dword [rbx + 0x9c], 1
add dword [rbx + 0x94], 1
sub eax, 1
cmp dword [rbx + 0x16f4], eax
je 0x4c9358
mov rcx, qword [rsp + 0x20]
mov edx, dword [rcx + 0x9c]
mov rax, rcx
cmp edx, 0x102
ja 0x4c9038
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.004c69a0
mov edx, dword [rbx + 0x9c]
mov rcx, rbx
mov rax, rbx
cmp edx, 0x102
ja 0x4c9038
test edi, edi
je 0x4c877c
test edx, edx
je 0x4c9518
mov rcx, qword [rsp + 0x20]
cmp edx, 2
mov dword [rcx + 0x88], 0
mov eax, dword [rcx + 0x94]
mov r8, qword [rcx + 0x50]
mov ecx, eax
jbe 0x4c9065
jmp 0x4c904e
mov rcx, qword [rsp + 0x20]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
call fcn.004ce3b0
cmp edi, 3
je 0x4c95dc
mov rcx, rsi
call fcn.004c6c20
mov edx, dword [rsi + 0x18]
test edx, edx
jne 0x4c89a8
jmp 0x4c8783
mov ecx, eax
or al, 0xc0
or cl, 0x80
cmp edx, 6
cmove eax, ecx
jmp 0x4c850e
mov ecx, dword [rsi + 0x4c]
mov edx, r9d
sub r8d, r9d
mov rbx, rax
add rdx, qword [rax + 0x10]
call fcn.004cf7e0
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x4c8c47
mov rbx, qword [rsp + 0x20]
mov edx, r9d
sub r8d, r9d
mov ecx, dword [rsi + 0x4c]
add rdx, qword [rbx + 0x10]
call fcn.004cf7e0
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x4c8f73
mov rbx, qword [rsp + 0x20]
mov rdx, r13
sub r14d, r15d
mov ecx, dword [rsi + 0x4c]
mov r8d, r14d
add rdx, qword [rbx + 0x10]
call fcn.004cf7e0
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x4c8b7e
mov rax, qword [0x00568a90]
mov rax, qword [rax + 0x20]
mov qword [rsi + 0x20], rax
mov dword [rsp + 0x2c], 0xfffffffe
jmp 0x4c878f
mov rax, qword [0x00568a90]
mov dword [rsp + 0x2c], 0xfffffffb
mov rax, qword [rax + 0x38]
mov qword [rsi + 0x20], rax
jmp 0x4c878f
cmp r9b, byte [rax + 2]
jne 0x4c9065
cmp r9b, byte [rax + 3]
jne 0x4c9065
lea r10, [r8 + rcx + 0x102]
add rax, 3
jmp 0x4c92a2
cmp r9b, byte [rax + 2]
jne 0x4c9643
cmp r9b, byte [rax + 3]
jne 0x4c963a
cmp r9b, byte [rax + 4]
jne 0x4c9631
cmp r9b, byte [rax + 5]
jne 0x4c964c
cmp r9b, byte [rax + 6]
jne 0x4c965e
cmp r9b, byte [rax + 7]
jne 0x4c9655
add rax, 8
cmp byte [rax], r9b
jne 0x4c92ac
cmp rax, r10
jae 0x4c92ac
cmp r9b, byte [rax + 1]
je 0x4c9258
add rax, 1
mov rbx, qword [rsp + 0x20]
sub eax, r10d
add eax, 0x102
cmp edx, eax
mov dword [rbx + 0x88], eax
jae 0x4c93b8
mov dword [rbx + 0x88], edx
mov eax, edx
nop
mov rbx, qword [rsp + 0x20]
mov r15d, 1
sub eax, 3
mov ecx, dword [rbx + 0x16f4]
mov r8, qword [rbx + 0x16f8]
mov rdx, rcx
mov word [r8 + rcx*2], r15w
mov r8, qword [rbx + 0x16e8]
add edx, 1
mov dword [rbx + 0x16f4], edx
mov byte [r8 + rcx], al
movzx eax, al
mov edx, dword [rbx + 0x88]
movzx eax, byte [r13 + rax]
add word [rbx + rax*4 + 0x4c0], 1
movzx eax, byte [r12]
add word [rbx + rax*4 + 0x9b0], 1
mov dword [rbx + 0x88], 0
mov eax, dword [rbx + 0x16f0]
sub dword [rbx + 0x9c], edx
add dword [rbx + 0x94], edx
sub eax, 1
cmp dword [rbx + 0x16f4], eax
jne 0x4c90c7
mov rcx, qword [rsp + 0x20]
xor edx, edx
mov eax, dword [rcx + 0x84]
mov r8d, dword [rcx + 0x94]
sub r8d, eax
test eax, eax
js 0x4c937a
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.004ce6a0
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.004c6c20
mov rax, qword [rbx]
mov ebp, dword [rax + 0x18]
test ebp, ebp
jne 0x4c90c7
jmp 0x4c877c
cmp eax, 2
ja 0x4c92d0
jmp 0x4c9065
mov rdi, qword [rsp + 0x20]
mov edx, ecx
shr ecx, 0x10
shr edx, 0x18
mov dword [rdi + 0x28], r8d
mov byte [rax], dl
mov eax, dword [rdi + 0x28]
mov rdx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rdx + rax], cl
mov eax, dword [rdi + 0x28]
movzx edx, word [rsi + 0x4c]
mov rcx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rcx + rax], dh
mov eax, dword [rdi + 0x28]
mov rcx, qword [rdi + 0x10]
lea r8d, [rax + 1]
mov dword [rdi + 0x28], r8d
mov byte [rcx + rax], dl
jmp 0x4c8a82
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov byte [rdx + rax], 0
mov edx, dword [rbx + 0xac]
mov eax, 2
cmp edx, 9
je 0x4c94a2
cmp dword [rbx + 0xb0], 1
setg al
cmp edx, 1
setle dl
or eax, edx
shl eax, 2
mov rbx, qword [rsp + 0x20]
mov edx, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x10]
lea r8d, [rdx + 1]
mov dword [rbx + 0x28], r8d
mov byte [rcx + rdx], al
mov eax, dword [rbx + 0x28]
mov rdx, qword [rbx + 0x10]
lea ecx, [rax + 1]
mov dword [rbx + 0x28], ecx
mov rcx, rsi
mov byte [rdx + rax], 0xa
mov dword [rbx + 8], 0x71
call fcn.004c6c20
mov ecx, dword [rbx + 0x28]
test ecx, ecx
jne 0x4c8783
mov eax, dword [rbx + 8]
jmp 0x4c85b9
mov rbx, qword [rsp + 0x20]
mov ecx, dword [rsi + 0x4c]
mov rdx, qword [rbx + 0x10]
mov r8d, dword [rbx + 0x28]
call fcn.004cf7e0
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x4c8eab
mov rax, qword [rsp + 0x20]
cmp edi, 4
mov dword [rax + 0x170c], 0
je 0x4c9554
mov rcx, qword [rsp + 0x20]
mov r11d, dword [rcx + 0x16f4]
test r11d, r11d
je 0x4c8762
jmp 0x4c8937
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
jmp 0x4c8c5f
mov rdi, rax
mov eax, dword [rax + 0x84]
xor edx, edx
mov r8d, dword [rdi + 0x94]
sub r8d, eax
test eax, eax
js 0x4c9574
movsxd rdx, eax
add rdx, qword [rdi + 0x50]
mov rdi, qword [rsp + 0x20]
mov r9d, 1
mov rcx, rdi
call fcn.004ce6a0
mov eax, dword [rdi + 0x94]
mov rcx, qword [rdi]
mov dword [rdi + 0x84], eax
call fcn.004c6c20
mov rax, qword [rdi]
mov ebx, dword [rax + 0x18]
test ebx, ebx
jne 0x4c95c0
mov dword [rdi + 8], 0x29a
jmp 0x4c877c
mov rcx, qword [rsp + 0x20]
call fcn.004ce540
jmp 0x4c8774
mov rax, qword [rsp + 0x20]
mov dword [rax + 8], 0x29a
jmp 0x4c89b1
mov r13d, r12d
mov r15d, r12d
jmp 0x4c8b4b
mov rdi, qword [rsp + 0x20]
xor r8d, r8d
xor edx, edx
mov eax, dword [rdi + 0x74]
mov rcx, qword [rdi + 0x68]
sub eax, 1
mov word [rcx + rax*2], r8w
lea r8, [rax + rax]
call sub.msvcrt.dll_memset
mov r9d, dword [rdi + 0x9c]
test r9d, r9d
jne 0x4c8774
mov dword [rdi + 0x94], 0
mov dword [rdi + 0x84], 0
mov dword [rdi + 0x170c], 0
jmp 0x4c8774
add rax, 4
jmp 0x4c92ac
add rax, 3
jmp 0x4c92ac
add rax, 2
jmp 0x4c92ac
add rax, 5
jmp 0x4c92ac
add rax, 7
jmp 0x4c92ac
add rax, 6
jmp 0x4c92ac