Function at 0x4984a0
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.00497c50
test eax, eax
mov dword [rsp + 0x2c], eax
jne 0x499266
cmp edi, 5
ja 0x499266
mov rax, qword [rcx + 0x28]
cmp qword [rcx + 0x10], 0
mov qword [rsp + 0x20], rax
je 0x499257
mov edx, dword [rcx + 8]
test edx, edx
je 0x4984f4
cmp qword [rcx], 0
je 0x499257
mov rax, qword [rsp + 0x20]
cmp edi, 4
setne cl
mov eax, dword [rax + 8]
cmp eax, 0x29a
jne 0x498511
test cl, cl
jne 0x499257
mov r12d, dword [rsi + 0x18]
test r12d, r12d
je 0x499273
mov rbx, qword [rsp + 0x20]
mov ebp, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x40]
mov dword [rbx + 0x40], edi
test ebp, ebp
jne 0x498808
test edx, edx
je 0x498700
cmp eax, 0x29a
je 0x499273
cmp eax, 0x2a
jne 0x498610
mov rdx, qword [rsp + 0x20]
mov eax, dword [rdx + 0x48]
shl eax, 0xc
sub eax, 0x7800
cmp dword [rdx + 0xb0], 1
jle 0x498b18
mov rdx, qword [rsp + 0x20]
mov r10d, dword [rdx + 0x94]
test r10d, r10d
je 0x498582
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 0x498b40
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.0049f250
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x71
call fcn.00496c80
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x4987e3
mov eax, dword [rbx + 8]
cmp eax, 0x39
je 0x498d58
cmp eax, 0x45
jne 0x498828
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
mov rdx, qword [rcx + 0x10]
test rdx, rdx
je 0x498bea
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 0x4986a4
jmp 0x499631
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
add dword [rbx + 0x38], r15d
call fcn.00496c80
mov r15d, dword [rbx + 0x28]
test r15d, r15d
jne 0x4987e3
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 0x498ba8
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 0x498660
cmp r12d, r8d
jae 0x498660
mov rax, qword [rsp + 0x20]
mov rdx, rbp
sub r8d, r12d
mov ecx, dword [rsi + 0x4c]
add rdx, qword [rax + 0x10]
call fcn.0049f840
mov dword [rsi + 0x4c], eax
jmp 0x498660
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 0x49872d
test cl, cl
jne 0x499273
cmp eax, 0x29a
jne 0x498548
mov r11d, dword [rsi + 8]
test r11d, r11d
jne 0x499273
mov ebx, dword [rsi + 8]
test ebx, ebx
jne 0x498761
mov rax, qword [rsp + 0x20]
mov r11d, dword [rax + 0x9c]
test r11d, r11d
je 0x4989f0
mov rax, qword [rsp + 0x20]
movsxd rax, dword [rax + 0xac]
test eax, eax
je 0x498f48
mov rdx, qword [rsp + 0x20]
mov edx, dword [rdx + 0xb0]
cmp edx, 2
je 0x4988a0
cmp edx, 3
je 0x499080
shl rax, 4
mov edx, edi
mov rcx, qword [rsp + 0x20]
lea r8, [0x004f8f00]
call qword [r8 + rax + 8]
lea edx, [rax - 2]
cmp edx, 1
jbe 0x498f28
test eax, eax
je 0x4987dc
cmp eax, 1
jne 0x498a08
cmp edi, 1
je 0x499611
cmp edi, 5
jne 0x4991a0
mov rcx, rsi
call fcn.00496c80
mov ecx, dword [rsi + 0x18]
test ecx, ecx
jne 0x4987ef
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.00496c80
mov ebx, dword [rsi + 0x18]
mov rax, qword [rsp + 0x20]
test ebx, ebx
je 0x4987e8
mov eax, dword [rax + 8]
jmp 0x49872d
cmp eax, 0x49
je 0x499070
cmp eax, 0x5b
je 0x4995a6
cmp eax, 0x67
jne 0x498745
mov rax, qword [rsp + 0x20]
mov rax, qword [rax + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x498fdf
mov eax, dword [rcx + 0x84]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x49886e
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.0049e700
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.00496c80
mov rax, qword [rbx]
mov eax, dword [rax + 0x18]
test eax, eax
je 0x4987dc
mov rax, qword [rsp + 0x20]
mov eax, dword [rax + 0x9c]
jmp 0x49893a
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 0x498858
test eax, eax
jne 0x4988b0
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.00496a00
mov r10d, dword [rbx + 0x9c]
test r10d, r10d
jne 0x4988b0
test edi, edi
je 0x4987dc
mov rax, qword [rsp + 0x20]
cmp edi, 4
mov dword [rax + 0x170c], 0
je 0x4995b4
mov rax, qword [rsp + 0x20]
mov eax, dword [rax + 0x16f4]
test eax, eax
je 0x4987c2
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 0x4989b4
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.0049e700
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.00496c80
mov rax, qword [rbx]
mov r10d, dword [rax + 0x18]
test r10d, r10d
jne 0x4987c2
jmp 0x4987dc
test edi, edi
je 0x4987ef
cmp dword [rax + 8], 0x29a
jne 0x498761
nop dword [rax]
cmp edi, 4
jne 0x4987ef
mov rax, qword [rsp + 0x20]
mov dword [rsp + 0x2c], 1
mov edx, dword [rax + 0x2c]
test edx, edx
jle 0x4987ef
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 0x499430
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.00496c80
mov rsi, qword [rsp + 0x20]
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x498afb
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 0x4987ef
mov edx, dword [rdx + 0xac]
cmp edx, 1
jle 0x49856e
cmp edx, 5
jg 0x4991d8
or eax, 0x40
jmp 0x49856e
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 0x4985dd
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 0x498bde
cmp r15d, r14d
jb 0x499231
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 0x498cb3
mov rax, qword [rsp + 0x20]
mov r9d, dword [rax + 0x28]
mov r8d, r9d
jmp 0x498c41
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 0x498c88
mov r8d, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x30]
mov rax, qword [rsp + 0x20]
cmp dword [rax + 0x18], r8d
jne 0x498c10
mov r15d, dword [rcx + 0x3c]
test r15d, r15d
je 0x498c5e
cmp r9d, r8d
jb 0x498f60
mov rcx, rsi
call fcn.00496c80
mov rax, qword [rsp + 0x20]
mov r8d, dword [rax + 0x28]
test r8d, r8d
jne 0x4987e3
mov rcx, qword [rax + 0x30]
xor r9d, r9d
jmp 0x498c10
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
mov r14d, dword [rcx + 0x3c]
test r14d, r14d
je 0x498ca7
mov r8d, dword [rax + 0x28]
cmp r9d, r8d
jb 0x4991ea
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 0x498fd0
mov rax, qword [rsp + 0x20]
mov r9d, dword [rax + 0x28]
mov r8d, r9d
jmp 0x498d15
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 0x498fa0
mov r8d, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x30]
mov rax, qword [rsp + 0x20]
cmp dword [rax + 0x18], r8d
jne 0x498ce0
mov r13d, dword [rcx + 0x3c]
test r13d, r13d
je 0x498d32
cmp r9d, r8d
jb 0x498f80
mov rcx, rsi
call fcn.00496c80
mov rax, qword [rsp + 0x20]
mov r8d, dword [rax + 0x28]
test r8d, r8d
jne 0x4987e3
mov rcx, qword [rax + 0x30]
xor r9d, r9d
jmp 0x498ce0
xor edx, edx
xor ecx, ecx
xor r8d, r8d
call fcn.0049f840
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 0x499488
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 0x498e8f
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 0x498f00
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 0x499550
mov rax, qword [rsp + 0x20]
mov dword [rax + 0x38], 0
mov dword [rax + 8], 0x45
jmp 0x49862b
mov rdx, qword [rsp + 0x20]
cmp eax, 2
mov dword [rdx + 8], 0x29a
jne 0x498a08
jmp 0x4987dc
mov rcx, qword [rsp + 0x20]
mov edx, edi
call fcn.00497700
lea edx, [rax - 2]
jmp 0x4987ac
mov edx, r9d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
add rdx, qword [rax + 0x10]
call fcn.0049f840
mov dword [rsi + 0x4c], eax
jmp 0x498c5e
mov edx, r9d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
add rdx, qword [rax + 0x10]
call fcn.0049f840
mov dword [rsi + 0x4c], eax
jmp 0x498d32
mov rdx, qword [rsp + 0x20]
mov rax, qword [rdx + 0x30]
mov r12d, dword [rax + 0x3c]
test r12d, r12d
je 0x49904a
mov r8d, dword [rdx + 0x28]
cmp r9d, r8d
jb 0x49920b
mov dword [rdx + 8], 0x67
jmp 0x498fec
mov eax, dword [rcx + 0x3c]
mov rdx, qword [rsp + 0x20]
mov dword [rdx + 8], 0x67
test eax, eax
je 0x49904a
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 0x49900f
mov rcx, rsi
call fcn.00496c80
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x4987e3
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.0049f840
mov dword [rsi + 0x4c], eax
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
mov dword [rbx + 8], 0x71
call fcn.00496c80
mov ebp, dword [rbx + 0x28]
test ebp, ebp
je 0x498745
jmp 0x4987e3
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
jmp 0x498bf6
mov r13, qword [0x00500540]
mov r12, qword [0x005004f0]
jmp 0x499127
mov dword [rax + 0x88], 0
mov eax, dword [rcx + 0x94]
mov r8, qword [rcx + 0x50]
mov ecx, eax
test eax, eax
je 0x4990c5
lea rax, [r8 + rcx - 1]
movzx r9d, byte [rax]
cmp r9b, byte [rax + 1]
je 0x499290
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 0x4993b8
mov rcx, qword [rsp + 0x20]
mov edx, dword [rcx + 0x9c]
mov rax, rcx
cmp edx, 0x102
ja 0x499098
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.00496a00
mov edx, dword [rbx + 0x9c]
mov rcx, rbx
mov rax, rbx
cmp edx, 0x102
ja 0x499098
test edi, edi
je 0x4987dc
test edx, edx
je 0x499578
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 0x4990c5
jmp 0x4990ae
mov rcx, qword [rsp + 0x20]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
call fcn.0049e410
cmp edi, 3
je 0x49963c
mov rcx, rsi
call fcn.00496c80
mov edx, dword [rsi + 0x18]
test edx, edx
jne 0x498a08
jmp 0x4987e3
mov ecx, eax
or al, 0xc0
or cl, 0x80
cmp edx, 6
cmove eax, ecx
jmp 0x49856e
mov ecx, dword [rsi + 0x4c]
mov edx, r9d
sub r8d, r9d
mov rbx, rax
add rdx, qword [rax + 0x10]
call fcn.0049f840
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x498ca7
mov rbx, qword [rsp + 0x20]
mov edx, r9d
sub r8d, r9d
mov ecx, dword [rsi + 0x4c]
add rdx, qword [rbx + 0x10]
call fcn.0049f840
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x498fd3
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.0049f840
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x498bde
mov rax, qword [0x005006e0]
mov rax, qword [rax + 0x20]
mov qword [rsi + 0x20], rax
mov dword [rsp + 0x2c], 0xfffffffe
jmp 0x4987ef
mov rax, qword [0x005006e0]
mov dword [rsp + 0x2c], 0xfffffffb
mov rax, qword [rax + 0x38]
mov qword [rsi + 0x20], rax
jmp 0x4987ef
cmp r9b, byte [rax + 2]
jne 0x4990c5
cmp r9b, byte [rax + 3]
jne 0x4990c5
lea r10, [r8 + rcx + 0x102]
add rax, 3
jmp 0x499302
cmp r9b, byte [rax + 2]
jne 0x4996a3
cmp r9b, byte [rax + 3]
jne 0x49969a
cmp r9b, byte [rax + 4]
jne 0x499691
cmp r9b, byte [rax + 5]
jne 0x4996ac
cmp r9b, byte [rax + 6]
jne 0x4996be
cmp r9b, byte [rax + 7]
jne 0x4996b5
add rax, 8
cmp byte [rax], r9b
jne 0x49930c
cmp rax, r10
jae 0x49930c
cmp r9b, byte [rax + 1]
je 0x4992b8
add rax, 1
mov rbx, qword [rsp + 0x20]
sub eax, r10d
add eax, 0x102
cmp edx, eax
mov dword [rbx + 0x88], eax
jae 0x499418
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 0x499127
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 0x4993da
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.0049e700
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.00496c80
mov rax, qword [rbx]
mov ebp, dword [rax + 0x18]
test ebp, ebp
jne 0x499127
jmp 0x4987dc
cmp eax, 2
ja 0x499330
jmp 0x4990c5
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 0x498ae2
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 0x499502
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.00496c80
mov ecx, dword [rbx + 0x28]
test ecx, ecx
jne 0x4987e3
mov eax, dword [rbx + 8]
jmp 0x498619
mov rbx, qword [rsp + 0x20]
mov ecx, dword [rsi + 0x4c]
mov rdx, qword [rbx + 0x10]
mov r8d, dword [rbx + 0x28]
call fcn.0049f840
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x498f0b
mov rax, qword [rsp + 0x20]
cmp edi, 4
mov dword [rax + 0x170c], 0
je 0x4995b4
mov rcx, qword [rsp + 0x20]
mov r11d, dword [rcx + 0x16f4]
test r11d, r11d
je 0x4987c2
jmp 0x498997
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
jmp 0x498cbf
mov rdi, rax
mov eax, dword [rax + 0x84]
xor edx, edx
mov r8d, dword [rdi + 0x94]
sub r8d, eax
test eax, eax
js 0x4995d4
movsxd rdx, eax
add rdx, qword [rdi + 0x50]
mov rdi, qword [rsp + 0x20]
mov r9d, 1
mov rcx, rdi
call fcn.0049e700
mov eax, dword [rdi + 0x94]
mov rcx, qword [rdi]
mov dword [rdi + 0x84], eax
call fcn.00496c80
mov rax, qword [rdi]
mov ebx, dword [rax + 0x18]
test ebx, ebx
jne 0x499620
mov dword [rdi + 8], 0x29a
jmp 0x4987dc
mov rcx, qword [rsp + 0x20]
call fcn.0049e5a0
jmp 0x4987d4
mov rax, qword [rsp + 0x20]
mov dword [rax + 8], 0x29a
jmp 0x498a11
mov r13d, r12d
mov r15d, r12d
jmp 0x498bab
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 0x4987d4
mov dword [rdi + 0x94], 0
mov dword [rdi + 0x84], 0
mov dword [rdi + 0x170c], 0
jmp 0x4987d4
add rax, 4
jmp 0x49930c
add rax, 3
jmp 0x49930c
add rax, 2
jmp 0x49930c
add rax, 5
jmp 0x49930c
add rax, 7
jmp 0x49930c
add rax, 6
jmp 0x49930c