Function at 0x6c291480
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
mov rsi, qword [rsp + 0xd0]
test rcx, rcx
mov r15, rcx
mov r12, rdx
mov rbp, r8
mov r13d, r9d
je 0x6c291aee
mov eax, dword [rcx + 0x5c]
test eax, eax
je 0x6c291aee
cmp qword [rcx + 0xc0], 0
je 0x6c2914c7
call dbg.unzCloseCurrentFile
mov r8d, dword [r15 + 0x50]
add r8d, dword [r15 + 0xbc]
xor r9d, r9d
mov rdx, qword [r15 + 0x40]
mov rcx, qword [r15 + 0x38]
call qword [r15 + 0x20]
test eax, eax
jne 0x6c291580
mov rdx, qword [r15 + 0x40]
lea r8, [rsp + 0x44]
mov rcx, r15
call dbg.unzlocal_getLong
test eax, eax
mov edi, eax
jne 0x6c2915a0
cmp dword [rsp + 0x44], 0x4034b50
mov eax, 0xffffff99
cmovne edi, eax
lea rbx, [rsp + 0x48]
mov rdx, qword [r15 + 0x40]
mov rcx, r15
mov r14d, 0xffffffff
mov r8, rbx
call dbg.unzlocal_getShort
mov rdx, qword [r15 + 0x40]
lea r8, [rsp + 0x4c]
test eax, eax
mov rcx, r15
cmovne edi, r14d
call dbg.unzlocal_getShort
test eax, eax
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
jne 0x6c291994
call dbg.unzlocal_getShort
test eax, eax
jne 0x6c2919a1
test edi, edi
jne 0x6c2915b5
mov eax, dword [r15 + 0x78]
cmp eax, dword [rsp + 0x48]
je 0x6c2915aa
mov edi, 0xffffff99
jmp 0x6c2915b5
mov edi, 0xffffff99
mov eax, edi
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov edi, 0xffffffff
jmp 0x6c291514
and eax, 0xfffffff7
mov eax, 0xffffff99
cmovne edi, eax
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
call dbg.unzlocal_getLong
test eax, eax
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
jne 0x6c291940
call dbg.unzlocal_getLong
test eax, eax
jne 0x6c291930
test edi, edi
jne 0x6c291610
mov eax, dword [rsp + 0x48]
cmp dword [r15 + 0x80], eax
je 0x6c2919c0
test byte [rsp + 0x4c], 8
jne 0x6c2919c0
mov edi, 0xffffff99
nop dword [rax + rax]
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
call dbg.unzlocal_getLong
test eax, eax
je 0x6c29195d
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
mov edi, 0xffffffff
call dbg.unzlocal_getLong
mov rdx, qword [r15 + 0x40]
lea r8, [rsp + 0x50]
mov rcx, r15
call dbg.unzlocal_getShort
test eax, eax
je 0x6c2919b0
mov r14d, dword [rsp + 0x50]
mov edi, 0xffffffff
lea rbx, [rsp + 0x54]
mov rdx, qword [r15 + 0x40]
mov rcx, r15
mov r8, rbx
call dbg.unzlocal_getShort
test eax, eax
jne 0x6c291580
mov eax, dword [r15 + 0xbc]
mov edx, dword [rsp + 0x50]
lea eax, [rdx + rax + 0x1e]
mov dword [rsp + 0x34], eax
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x38], eax
add eax, 0x1e
test edi, edi
mov dword [rsp + 0x3c], eax
jne 0x6c291580
mov ecx, 0xe0
call sym.malloc
test rax, rax
je 0x6c291a81
mov ecx, 0x4000
mov qword [rsp + 0x28], rax
call sym.malloc
mov r11, qword [rsp + 0x28]
mov ecx, dword [rsp + 0x34]
test rax, rax
mov dword [r11 + 0x68], ecx
mov ecx, dword [rsp + 0x38]
mov qword [r11], rax
mov dword [r11 + 0x70], 0
mov dword [r11 + 0xd8], r13d
mov dword [r11 + 0x6c], ecx
je 0x6c291a79
test r12, r12
mov dword [r11 + 0x64], 0
je 0x6c29170b
mov eax, dword [r15 + 0x78]
mov dword [r12], eax
test rbp, rbp
je 0x6c291740
mov dword [rbp], 6
mov eax, dword [r15 + 0x74]
and eax, 6
cmp eax, 4
je 0x6c2919f5
cmp eax, 6
je 0x6c291a01
cmp eax, 2
jne 0x6c291740
mov dword [rbp], 9
nop dword [rax]
mov edx, dword [r15 + 0x80]
mov eax, dword [r15 + 0x78]
mov dword [r11 + 0x74], 0
mov dword [r11 + 0x24], 0
mov dword [r11 + 0x78], edx
mov rdx, qword [r15 + 0x40]
cmp eax, 8
mov dword [r11 + 0xd0], eax
mov qword [r11 + 0xc8], rdx
mov rdx, qword [r15]
mov qword [r11 + 0x88], rdx
mov rdx, qword [r15 + 8]
mov qword [r11 + 0x90], rdx
mov rdx, qword [r15 + 0x10]
mov qword [r11 + 0x98], rdx
mov rdx, qword [r15 + 0x18]
mov qword [r11 + 0xa0], rdx
mov rdx, qword [r15 + 0x20]
mov qword [r11 + 0xa8], rdx
mov rdx, qword [r15 + 0x28]
mov qword [r11 + 0xb0], rdx
mov rdx, qword [r15 + 0x30]
mov qword [r11 + 0xb8], rdx
mov rdx, qword [r15 + 0x38]
mov qword [r11 + 0xc0], rdx
mov edx, dword [r15 + 0x50]
mov dword [r11 + 0xd4], edx
jne 0x6c2917e1
test r13d, r13d
je 0x6c291a90
mov eax, dword [r15 + 0x84]
mov dword [r11 + 0x10], 0
mov qword [r15 + 0xc0], r11
mov dword [r11 + 0x7c], eax
mov eax, dword [r15 + 0x88]
mov dword [r11 + 0x80], eax
mov eax, dword [rsp + 0x3c]
add eax, dword [r15 + 0xbc]
add r14d, eax
test rsi, rsi
mov dword [r11 + 0x60], r14d
je 0x6c291585
call dbg.get_crc_table
mov dword [r15 + 0xcc], 0x12345678
mov qword [r15 + 0xd8], rax
mov r14, rax
mov dword [r15 + 0xd0], 0x23456789
mov dword [r15 + 0xd4], 0x34567890
lea rbp, [r15 + 0xcc]
movsx r8d, byte [rsi]
test r8b, r8b
je 0x6c29187c
add rsi, 1
mov rdx, r14
mov rcx, rbp
call sym.update_keys
movsx r8d, byte [rsi]
test r8b, r8b
jne 0x6c291864
mov rax, qword [r15 + 0xc0]
xor r9d, r9d
mov rdx, qword [r15 + 0x40]
mov rcx, qword [r15 + 0x38]
mov r8d, dword [rax + 0xd4]
add r8d, dword [rax + 0x60]
call qword [r15 + 0x20]
test eax, eax
jne 0x6c291a81
mov rdx, qword [r15 + 0x40]
mov rcx, qword [r15 + 0x38]
mov r9d, 0xc
mov r8, rbx
call qword [r15 + 8]
cmp eax, 0xb
jbe 0x6c291a81
lea rsi, [rsp + 0x60]
nop dword [rax + rax]
movzx r8d, word [r15 + 0xd4]
mov rdx, qword [r15 + 0xd8]
mov rcx, rbp
add rbx, 1
mov eax, r8d
or eax, 2
mov r8d, eax
xor r8d, 1
imul r8d, eax
shr r8d, 8
xor r8b, byte [rbx - 1]
mov byte [rbx - 1], r8b
movsx r8d, r8b
call sym.update_keys
cmp rsi, rbx
jne 0x6c2918d0
mov rax, qword [r15 + 0xc0]
add dword [rax + 0x60], 0xc
mov dword [r15 + 0xc8], 1
jmp 0x6c291585
mov edi, 0xffffffff
jmp 0x6c291610
call dbg.unzlocal_getLong
test eax, eax
je 0x6c291930
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
mov edi, 0xffffffff
call dbg.unzlocal_getLong
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
call dbg.unzlocal_getLong
test eax, eax
je 0x6c29163b
mov rdx, qword [r15 + 0x40]
lea r8, [rsp + 0x50]
mov rcx, r15
mov edi, 0xffffffff
call dbg.unzlocal_getShort
mov r14d, dword [rsp + 0x50]
jmp 0x6c29165e
call dbg.unzlocal_getShort
mov edi, r14d
jmp 0x6c2915b5
mov edi, r14d
jmp 0x6c2915b5
mov r14d, dword [rsp + 0x50]
jmp 0x6c29165e
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
call dbg.unzlocal_getLong
test eax, eax
jne 0x6c291627
mov eax, dword [rsp + 0x48]
cmp dword [r15 + 0x84], eax
je 0x6c291a10
test byte [rsp + 0x4c], 8
jne 0x6c291a10
mov edi, 0xffffff99
jmp 0x6c29195d
mov dword [rbp], 2
jmp 0x6c291740
mov dword [rbp], 1
jmp 0x6c291740
mov rdx, qword [r15 + 0x40]
mov r8, rbx
mov rcx, r15
call dbg.unzlocal_getLong
test eax, eax
jne 0x6c291974
mov eax, dword [rsp + 0x48]
cmp dword [r15 + 0x88], eax
je 0x6c291a45
test byte [rsp + 0x4c], 8
jne 0x6c291a45
mov edi, 0xffffff99
jmp 0x6c29163b
mov rdx, qword [r15 + 0x40]
lea r8, [rsp + 0x50]
mov rcx, r15
call dbg.unzlocal_getShort
test eax, eax
mov edi, eax
jne 0x6c291654
mov r14d, dword [rsp + 0x50]
cmp dword [r15 + 0x8c], r14d
mov eax, 0xffffff99
cmovne edi, eax
jmp 0x6c29165e
mov rcx, r11
call sym.free
mov edi, 0xffffff98
jmp 0x6c291585
lea rcx, [r11 + 8]
lea r8, [0x6c2a7400]
mov qword [r11 + 0x38], 0
mov qword [r11 + 0x40], 0
mov qword [r11 + 0x48], 0
mov r9d, 0x58
mov qword [r11 + 8], 0
mov dword [r11 + 0x10], 0
mov edx, 0xfffffff1
mov qword [rsp + 0x28], r11
call dbg.inflateInit2_
test eax, eax
mov r11, qword [rsp + 0x28]
jne 0x6c291af8
mov dword [r11 + 0x64], 1
jmp 0x6c2917e1
mov edi, 0xffffff9a
jmp 0x6c291585
mov rcx, r11
mov dword [rsp + 0x28], eax
call sym.free
mov eax, dword [rsp + 0x28]
mov edi, eax
jmp 0x6c291585