Function at 0x4d2770
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.004d1f20
test eax, eax
mov dword [rsp + 0x2c], eax
jne 0x4d3536
cmp edi, 5
ja 0x4d3536
mov rax, qword [rcx + 0x28]
cmp qword [rcx + 0x10], 0
mov qword [rsp + 0x20], rax
je 0x4d3527
mov edx, dword [rcx + 8]
test edx, edx
je 0x4d27c4
cmp qword [rcx], 0
je 0x4d3527
mov rax, qword [rsp + 0x20]
cmp edi, 4
setne cl
mov eax, dword [rax + 8]
cmp eax, 0x29a
jne 0x4d27e1
test cl, cl
jne 0x4d3527
mov r12d, dword [rsi + 0x18]
test r12d, r12d
je 0x4d3543
mov rbx, qword [rsp + 0x20]
mov ebp, dword [rbx + 0x28]
mov r8d, dword [rbx + 0x40]
mov dword [rbx + 0x40], edi
test ebp, ebp
jne 0x4d2ad8
test edx, edx
je 0x4d29d0
cmp eax, 0x29a
je 0x4d3543
cmp eax, 0x2a
jne 0x4d28e0
mov rdx, qword [rsp + 0x20]
mov eax, dword [rdx + 0x48]
shl eax, 0xc
sub eax, 0x7800
cmp dword [rdx + 0xb0], 1
jle 0x4d2de8
mov rdx, qword [rsp + 0x20]
mov r10d, dword [rdx + 0x94]
test r10d, r10d
je 0x4d2852
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 0x4d2e10
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call fcn.004d9520
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
mov dword [rsi + 0x4c], eax
mov dword [rbx + 8], 0x71
call fcn.004d0f50
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x4d2ab3
mov eax, dword [rbx + 8]
cmp eax, 0x39
je 0x4d3028
cmp eax, 0x45
jne 0x4d2af8
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
mov rdx, qword [rcx + 0x10]
test rdx, rdx
je 0x4d2eba
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 0x4d2974
jmp 0x4d3901
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
add dword [rbx + 0x38], r15d
call fcn.004d0f50
mov r15d, dword [rbx + 0x28]
test r15d, r15d
jne 0x4d2ab3
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 0x4d2e78
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 0x4d2930
cmp r12d, r8d
jae 0x4d2930
mov rax, qword [rsp + 0x20]
mov rdx, rbp
sub r8d, r12d
mov ecx, dword [rsi + 0x4c]
add rdx, qword [rax + 0x10]
call fcn.004d9b10
mov dword [rsi + 0x4c], eax
jmp 0x4d2930
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 0x4d29fd
test cl, cl
jne 0x4d3543
cmp eax, 0x29a
jne 0x4d2818
mov r11d, dword [rsi + 8]
test r11d, r11d
jne 0x4d3543
mov ebx, dword [rsi + 8]
test ebx, ebx
jne 0x4d2a31
mov rax, qword [rsp + 0x20]
mov r11d, dword [rax + 0x9c]
test r11d, r11d
je 0x4d2cc0
mov rax, qword [rsp + 0x20]
movsxd rax, dword [rax + 0xac]
test eax, eax
je 0x4d3218
mov rdx, qword [rsp + 0x20]
mov edx, dword [rdx + 0xb0]
cmp edx, 2
je 0x4d2b70
cmp edx, 3
je 0x4d3350
shl rax, 4
mov edx, edi
mov rcx, qword [rsp + 0x20]
lea r8, [0x005a3fe0]
call qword [r8 + rax + 8]
lea edx, [rax - 2]
cmp edx, 1
jbe 0x4d31f8
test eax, eax
je 0x4d2aac
cmp eax, 1
jne 0x4d2cd8
cmp edi, 1
je 0x4d38e1
cmp edi, 5
jne 0x4d3470
mov rcx, rsi
call fcn.004d0f50
mov ecx, dword [rsi + 0x18]
test ecx, ecx
jne 0x4d2abf
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.004d0f50
mov ebx, dword [rsi + 0x18]
mov rax, qword [rsp + 0x20]
test ebx, ebx
je 0x4d2ab8
mov eax, dword [rax + 8]
jmp 0x4d29fd
cmp eax, 0x49
je 0x4d3340
cmp eax, 0x5b
je 0x4d3876
cmp eax, 0x67
jne 0x4d2a15
mov rax, qword [rsp + 0x20]
mov rax, qword [rax + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x4d32af
mov eax, dword [rcx + 0x84]
xor edx, edx
sub r8d, eax
test eax, eax
js 0x4d2b3e
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.004d89d0
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.004d0f50
mov rax, qword [rbx]
mov eax, dword [rax + 0x18]
test eax, eax
je 0x4d2aac
mov rax, qword [rsp + 0x20]
mov eax, dword [rax + 0x9c]
jmp 0x4d2c0a
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 0x4d2b28
test eax, eax
jne 0x4d2b80
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.004d0cd0
mov r10d, dword [rbx + 0x9c]
test r10d, r10d
jne 0x4d2b80
test edi, edi
je 0x4d2aac
mov rax, qword [rsp + 0x20]
cmp edi, 4
mov dword [rax + 0x170c], 0
je 0x4d3884
mov rax, qword [rsp + 0x20]
mov eax, dword [rax + 0x16f4]
test eax, eax
je 0x4d2a92
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 0x4d2c84
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.004d89d0
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.004d0f50
mov rax, qword [rbx]
mov r10d, dword [rax + 0x18]
test r10d, r10d
jne 0x4d2a92
jmp 0x4d2aac
test edi, edi
je 0x4d2abf
cmp dword [rax + 8], 0x29a
jne 0x4d2a31
nop dword [rax]
cmp edi, 4
jne 0x4d2abf
mov rax, qword [rsp + 0x20]
mov dword [rsp + 0x2c], 1
mov edx, dword [rax + 0x2c]
test edx, edx
jle 0x4d2abf
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 0x4d3700
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.004d0f50
mov rsi, qword [rsp + 0x20]
mov eax, dword [rsi + 0x2c]
test eax, eax
jle 0x4d2dcb
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 0x4d2abf
mov edx, dword [rdx + 0xac]
cmp edx, 1
jle 0x4d283e
cmp edx, 5
jg 0x4d34a8
or eax, 0x40
jmp 0x4d283e
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 0x4d28ad
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 0x4d2eae
cmp r15d, r14d
jb 0x4d3501
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 0x4d2f83
mov rax, qword [rsp + 0x20]
mov r9d, dword [rax + 0x28]
mov r8d, r9d
jmp 0x4d2f11
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 0x4d2f58
mov r8d, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x30]
mov rax, qword [rsp + 0x20]
cmp dword [rax + 0x18], r8d
jne 0x4d2ee0
mov r15d, dword [rcx + 0x3c]
test r15d, r15d
je 0x4d2f2e
cmp r9d, r8d
jb 0x4d3230
mov rcx, rsi
call fcn.004d0f50
mov rax, qword [rsp + 0x20]
mov r8d, dword [rax + 0x28]
test r8d, r8d
jne 0x4d2ab3
mov rcx, qword [rax + 0x30]
xor r9d, r9d
jmp 0x4d2ee0
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
mov r14d, dword [rcx + 0x3c]
test r14d, r14d
je 0x4d2f77
mov r8d, dword [rax + 0x28]
cmp r9d, r8d
jb 0x4d34ba
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 0x4d32a0
mov rax, qword [rsp + 0x20]
mov r9d, dword [rax + 0x28]
mov r8d, r9d
jmp 0x4d2fe5
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 0x4d3270
mov r8d, dword [rbx + 0x28]
mov rcx, qword [rbx + 0x30]
mov rax, qword [rsp + 0x20]
cmp dword [rax + 0x18], r8d
jne 0x4d2fb0
mov r13d, dword [rcx + 0x3c]
test r13d, r13d
je 0x4d3002
cmp r9d, r8d
jb 0x4d3250
mov rcx, rsi
call fcn.004d0f50
mov rax, qword [rsp + 0x20]
mov r8d, dword [rax + 0x28]
test r8d, r8d
jne 0x4d2ab3
mov rcx, qword [rax + 0x30]
xor r9d, r9d
jmp 0x4d2fb0
xor edx, edx
xor ecx, ecx
xor r8d, r8d
call fcn.004d9b10
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 0x4d3758
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 0x4d315f
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 0x4d31d0
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 0x4d3820
mov rax, qword [rsp + 0x20]
mov dword [rax + 0x38], 0
mov dword [rax + 8], 0x45
jmp 0x4d28fb
mov rdx, qword [rsp + 0x20]
cmp eax, 2
mov dword [rdx + 8], 0x29a
jne 0x4d2cd8
jmp 0x4d2aac
mov rcx, qword [rsp + 0x20]
mov edx, edi
call fcn.004d19d0
lea edx, [rax - 2]
jmp 0x4d2a7c
mov edx, r9d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
add rdx, qword [rax + 0x10]
call fcn.004d9b10
mov dword [rsi + 0x4c], eax
jmp 0x4d2f2e
mov edx, r9d
mov ecx, dword [rsi + 0x4c]
sub r8d, r9d
add rdx, qword [rax + 0x10]
call fcn.004d9b10
mov dword [rsi + 0x4c], eax
jmp 0x4d3002
mov rdx, qword [rsp + 0x20]
mov rax, qword [rdx + 0x30]
mov r12d, dword [rax + 0x3c]
test r12d, r12d
je 0x4d331a
mov r8d, dword [rdx + 0x28]
cmp r9d, r8d
jb 0x4d34db
mov dword [rdx + 8], 0x67
jmp 0x4d32bc
mov eax, dword [rcx + 0x3c]
mov rdx, qword [rsp + 0x20]
mov dword [rdx + 8], 0x67
test eax, eax
je 0x4d331a
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 0x4d32df
mov rcx, rsi
call fcn.004d0f50
mov r8d, dword [rbx + 0x28]
test r8d, r8d
jne 0x4d2ab3
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.004d9b10
mov dword [rsi + 0x4c], eax
mov rbx, qword [rsp + 0x20]
mov rcx, rsi
mov dword [rbx + 8], 0x71
call fcn.004d0f50
mov ebp, dword [rbx + 0x28]
test ebp, ebp
je 0x4d2a15
jmp 0x4d2ab3
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
jmp 0x4d2ec6
mov r13, qword [0x005ab6c0]
mov r12, qword [0x005ab670]
jmp 0x4d33f7
mov dword [rax + 0x88], 0
mov eax, dword [rcx + 0x94]
mov r8, qword [rcx + 0x50]
mov ecx, eax
test eax, eax
je 0x4d3395
lea rax, [r8 + rcx - 1]
movzx r9d, byte [rax]
cmp r9b, byte [rax + 1]
je 0x4d3560
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 0x4d3688
mov rcx, qword [rsp + 0x20]
mov edx, dword [rcx + 0x9c]
mov rax, rcx
cmp edx, 0x102
ja 0x4d3368
mov rbx, qword [rsp + 0x20]
mov rcx, rbx
call fcn.004d0cd0
mov edx, dword [rbx + 0x9c]
mov rcx, rbx
mov rax, rbx
cmp edx, 0x102
ja 0x4d3368
test edi, edi
je 0x4d2aac
test edx, edx
je 0x4d3848
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 0x4d3395
jmp 0x4d337e
mov rcx, qword [rsp + 0x20]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
call fcn.004d86e0
cmp edi, 3
je 0x4d390c
mov rcx, rsi
call fcn.004d0f50
mov edx, dword [rsi + 0x18]
test edx, edx
jne 0x4d2cd8
jmp 0x4d2ab3
mov ecx, eax
or al, 0xc0
or cl, 0x80
cmp edx, 6
cmove eax, ecx
jmp 0x4d283e
mov ecx, dword [rsi + 0x4c]
mov edx, r9d
sub r8d, r9d
mov rbx, rax
add rdx, qword [rax + 0x10]
call fcn.004d9b10
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x4d2f77
mov rbx, qword [rsp + 0x20]
mov edx, r9d
sub r8d, r9d
mov ecx, dword [rsi + 0x4c]
add rdx, qword [rbx + 0x10]
call fcn.004d9b10
mov dword [rsi + 0x4c], eax
mov rax, qword [rbx + 0x30]
mov eax, dword [rax + 0x3c]
jmp 0x4d32a3
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.004d9b10
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x4d2eae
mov rax, qword [0x005abe50]
mov rax, qword [rax + 0x20]
mov qword [rsi + 0x20], rax
mov dword [rsp + 0x2c], 0xfffffffe
jmp 0x4d2abf
mov rax, qword [0x005abe50]
mov dword [rsp + 0x2c], 0xfffffffb
mov rax, qword [rax + 0x38]
mov qword [rsi + 0x20], rax
jmp 0x4d2abf
cmp r9b, byte [rax + 2]
jne 0x4d3395
cmp r9b, byte [rax + 3]
jne 0x4d3395
lea r10, [r8 + rcx + 0x102]
add rax, 3
jmp 0x4d35d2
cmp r9b, byte [rax + 2]
jne 0x4d3973
cmp r9b, byte [rax + 3]
jne 0x4d396a
cmp r9b, byte [rax + 4]
jne 0x4d3961
cmp r9b, byte [rax + 5]
jne 0x4d397c
cmp r9b, byte [rax + 6]
jne 0x4d398e
cmp r9b, byte [rax + 7]
jne 0x4d3985
add rax, 8
cmp byte [rax], r9b
jne 0x4d35dc
cmp rax, r10
jae 0x4d35dc
cmp r9b, byte [rax + 1]
je 0x4d3588
add rax, 1
mov rbx, qword [rsp + 0x20]
sub eax, r10d
add eax, 0x102
cmp edx, eax
mov dword [rbx + 0x88], eax
jae 0x4d36e8
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 0x4d33f7
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 0x4d36aa
movsxd rdx, eax
add rdx, qword [rcx + 0x50]
mov rbx, qword [rsp + 0x20]
xor r9d, r9d
mov rcx, rbx
call fcn.004d89d0
mov eax, dword [rbx + 0x94]
mov rcx, qword [rbx]
mov dword [rbx + 0x84], eax
call fcn.004d0f50
mov rax, qword [rbx]
mov ebp, dword [rax + 0x18]
test ebp, ebp
jne 0x4d33f7
jmp 0x4d2aac
cmp eax, 2
ja 0x4d3600
jmp 0x4d3395
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 0x4d2db2
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 0x4d37d2
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.004d0f50
mov ecx, dword [rbx + 0x28]
test ecx, ecx
jne 0x4d2ab3
mov eax, dword [rbx + 8]
jmp 0x4d28e9
mov rbx, qword [rsp + 0x20]
mov ecx, dword [rsi + 0x4c]
mov rdx, qword [rbx + 0x10]
mov r8d, dword [rbx + 0x28]
call fcn.004d9b10
mov rcx, qword [rbx + 0x30]
mov dword [rsi + 0x4c], eax
jmp 0x4d31db
mov rax, qword [rsp + 0x20]
cmp edi, 4
mov dword [rax + 0x170c], 0
je 0x4d3884
mov rcx, qword [rsp + 0x20]
mov r11d, dword [rcx + 0x16f4]
test r11d, r11d
je 0x4d2a92
jmp 0x4d2c67
mov rax, qword [rsp + 0x20]
mov rcx, qword [rax + 0x30]
jmp 0x4d2f8f
mov rdi, rax
mov eax, dword [rax + 0x84]
xor edx, edx
mov r8d, dword [rdi + 0x94]
sub r8d, eax
test eax, eax
js 0x4d38a4
movsxd rdx, eax
add rdx, qword [rdi + 0x50]
mov rdi, qword [rsp + 0x20]
mov r9d, 1
mov rcx, rdi
call fcn.004d89d0
mov eax, dword [rdi + 0x94]
mov rcx, qword [rdi]
mov dword [rdi + 0x84], eax
call fcn.004d0f50
mov rax, qword [rdi]
mov ebx, dword [rax + 0x18]
test ebx, ebx
jne 0x4d38f0
mov dword [rdi + 8], 0x29a
jmp 0x4d2aac
mov rcx, qword [rsp + 0x20]
call fcn.004d8870
jmp 0x4d2aa4
mov rax, qword [rsp + 0x20]
mov dword [rax + 8], 0x29a
jmp 0x4d2ce1
mov r13d, r12d
mov r15d, r12d
jmp 0x4d2e7b
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 0x4d2aa4
mov dword [rdi + 0x94], 0
mov dword [rdi + 0x84], 0
mov dword [rdi + 0x170c], 0
jmp 0x4d2aa4
add rax, 4
jmp 0x4d35dc
add rax, 3
jmp 0x4d35dc
add rax, 2
jmp 0x4d35dc
add rax, 5
jmp 0x4d35dc
add rax, 7
jmp 0x4d35dc
add rax, 6
jmp 0x4d35dc