Function at 0x4c6f00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x94
push ebx
mov ebx, dword [ebp + 8]
or eax, 0xffffffff
push esi
xor ecx, ecx
mov dword [ebp - 0xc], eax
xorps xmm0, xmm0
mov dword [ebp - 0x44], ecx
mov edx, dword [ebx + 0x154]
or esi, eax
push edi
or edi, eax
movlpd qword [ebp - 0x38], xmm0
cmp dword [ebx + 0x90], ecx
mov ebx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x10], edx
jle 0x4c7617
lea eax, [edx + 0x15c]
mov dword [ebp - 4], ecx
mov dword [ebp - 0x28], eax
xor ecx, ecx
xor esi, esi
mov dword [ebp - 0x20], esi
nop word [eax + eax]
movzx edi, si
lea eax, [edi + ecx*2]
mov ecx, dword [edx + eax*4 + 0x36c]
mov dword [ebp - 0x3c], eax
test cl, 1
je 0x4c6fc6
mov esi, dword [ebp + 0x10]
xor edx, edx
shr ecx, 0xc
shld edx, ecx, 0x1c
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x10]
shl ecx, 0x1c
mov dword [ebp - 0x48], ecx
mov eax, dword [edx + eax*4 + 0x3cc]
xor edx, edx
mov dword [ebp - 0x24], eax
shr eax, 0xc
shld edx, eax, 0x1c
shl eax, 0x1c
or eax, 0xfffffff
cmp esi, dword [ebp - 0x30]
mov esi, dword [ebp - 0x20]
jb 0x4c6fc3
ja 0x4c6fb7
cmp dword [ebp + 0xc], ecx
jb 0x4c6fc3
cmp dword [ebp + 0x10], edx
jb 0x4c6fd9
ja 0x4c6fc3
cmp dword [ebp + 0xc], eax
jbe 0x4c6fd9
mov edx, dword [ebp - 0x10]
inc esi
mov dword [ebp - 0x20], esi
cmp si, 2
jae 0x4c75ea
mov ecx, dword [ebp - 0x44]
jmp 0x4c6f60
mov esi, dword [ebp - 0x24]
mov ebx, dword [ebp + 0xc]
and esi, 0x3ff
push esi
push edx
push eax
push dword [ebp - 0x30]
mov dword [ebp - 0x94], 0
push ecx
mov ecx, dword [ebp - 0x44]
push edi
push ecx
push dword [ebp + 0x10]
mov dword [ebp - 0x90], 1
push ebx
push str.zen2_decode_addr___A__p__d__d__p__p__d_
push 0xffffffffffffffff
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 2
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x80], 3
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0
call fcn.004bf690
mov ecx, dword [ebp - 0x10]
add esp, 0x2c
mov eax, dword [ebp - 0x3c]
mov eax, dword [ecx + eax*4 + 0x36c]
mov ecx, eax
shr ecx, 8
and ecx, 1
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x24], ecx
mov ecx, eax
shr ecx, 6
and ecx, 3
mov dword [ebp - 0x50], ecx
mov ecx, eax
shr ecx, 2
and ecx, 0xf
cmp ecx, 0xc
jae 0x4c70bf
mov edx, dword [ebp + ecx*4 - 0x94]
jmp 0x4c70c2
lea edx, [ecx - 0xb]
shr eax, 9
mov edi, ebx
mov ebx, dword [ebp + 0x10]
and eax, 7
mov dword [ebp - 4], edx
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x34], ebx
lea edx, [eax + 8]
mov eax, dword [ebp + 8]
mov dword [ebp - 8], edx
mov eax, dword [eax + 0x90]
dec eax
and eax, esi
mov esi, dword [ebp - 4]
mov dword [ebp - 0xc], eax
test esi, esi
je 0x4c7381
mov eax, dword [ebp - 0x28]
cmp ecx, 0xc
jb 0x4c710f
test dword [eax], 0x100000
je 0x4c710f
mov dword [ebp - 0x18], 1
jmp 0x4c711b
mov dword [ebp - 0x18], 0
cmp ecx, 0xc
jb 0x4c712c
test dword [eax], 0x200000
je 0x4c7133
mov dword [ebp - 0x2c], 1
jmp 0x4c713f
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x2c], 0
cmp ecx, 0xc
jb 0x4c7168
test dword [eax], 0x400000
je 0x4c7168
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x14], 1
call fcn.004f7860
mov esi, eax
mov edx, 1
and esi, 1
jmp 0x4c7186
movq xmm1, qword [ebp + 0xc]
movd xmm0, edx
xor edx, edx
psrlq xmm1, xmm0
mov dword [ebp - 0x14], edx
movd esi, xmm1
and esi, 1
cmp ecx, 0xc
jb 0x4c7195
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
shrd ecx, eax, 0xe
and ecx, 1
xor esi, ecx
cmp dword [ebp - 0x18], 0
je 0x4c71aa
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
shrd ecx, eax, 0x12
and ecx, 1
xor esi, ecx
cmp dword [ebp - 0x2c], 0
je 0x4c71bf
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
shrd ecx, eax, 0x17
and ecx, 1
xor esi, ecx
test edx, edx
je 0x4c71cb
mov eax, dword [ebp + 0x10]
and eax, 1
xor esi, eax
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
call fcn.004f7860
and eax, 1
cmp eax, esi
je 0x4c7204
mov eax, dword [ebp - 8]
xor edi, edi
bts edi, eax
xor ebx, ebx
cmp eax, 0x20
cmovae ebx, edi
xor edi, ebx
cmp eax, 0x40
cmovae ebx, edi
xor edi, dword [ebp + 0xc]
xor ebx, dword [ebp + 0x10]
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x34], ebx
mov eax, dword [ebp - 0xc]
xor eax, esi
push eax
push esi
push str.zen2_decode_addr___B0__d__d_
push 0xffffffffffffffff
mov dword [ebp - 0xc], eax
call fcn.004bf690
mov eax, dword [ebp - 4]
add esp, 0x10
cmp eax, 1
jbe 0x4c72d0
mov eax, dword [ebp - 8]
movq xmm1, qword [ebp - 0x38]
inc eax
movd xmm0, eax
mov eax, dword [ebp - 0x1c]
psrlq xmm1, xmm0
and eax, 0x3c
movd edx, xmm1
and edx, 1
cmp al, 0x30
jb 0x4c7258
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0xc
and ecx, 1
xor edx, ecx
cmp dword [ebp - 0x18], 0
je 0x4c726b
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0x10
and ecx, 1
xor edx, ecx
cmp dword [ebp - 0x2c], 0
je 0x4c727e
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0x15
and ecx, 1
xor edx, ecx
cmp dword [ebp - 0x14], 0
je 0x4c7291
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0x1e
and ecx, 1
xor edx, ecx
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0xc
and ecx, 1
cmp ecx, edx
je 0x4c72af
xor edi, 0x1000
xor ebx, 0
mov dword [ebp - 0x38], edi
mov dword [ebp - 0x34], ebx
mov esi, dword [ebp - 0xc]
lea eax, [edx + edx]
xor esi, eax
push esi
push edx
push str.zen2_decode_addr___B1__d__d_
push 0xffffffffffffffff
mov dword [ebp - 0xc], esi
call fcn.004bf690
mov eax, dword [ebp - 4]
add esp, 0x10
jmp 0x4c72d3
mov esi, dword [ebp - 0xc]
cmp eax, 2
jbe 0x4c737b
mov eax, dword [ebp - 8]
movq xmm1, qword [ebp - 0x38]
add eax, 2
movd xmm0, eax
mov eax, dword [ebp - 0x1c]
psrlq xmm1, xmm0
and eax, 0x3c
movd edx, xmm1
and edx, 1
cmp al, 0x30
jb 0x4c730d
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0xd
and ecx, 1
xor edx, ecx
cmp dword [ebp - 0x18], 0
je 0x4c7320
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0x11
and ecx, 1
xor edx, ecx
cmp dword [ebp - 0x2c], 0
je 0x4c7333
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0x16
and ecx, 1
xor edx, ecx
cmp dword [ebp - 0x14], 0
je 0x4c7346
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0x1f
and ecx, 1
xor edx, ecx
mov ecx, edi
mov eax, ebx
shrd ecx, eax, 0xd
and ecx, 1
cmp ecx, edx
je 0x4c735e
xor edi, 0x2000
xor ebx, 0
lea eax, [edx*4]
xor esi, eax
push esi
push edx
push str.zen2_decode_addr___B2__d__d_
push 0xffffffffffffffff
mov dword [ebp - 0xc], esi
call fcn.004bf690
add esp, 0x10
mov esi, dword [ebp - 4]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x10]
test byte [ecx + eax*4 + 0x36c], 2
je 0x4c73b3
cmp ebx, 1
jb 0x4c73b3
ja 0x4c739c
test edi, edi
jb 0x4c73b3
mov ecx, dword [ebp - 0x28]
xor eax, eax
mov ecx, dword [ecx - 0x60]
and ecx, 0xff000000
add ecx, eax
adc eax, 0xffffffff
add edi, ecx
adc ebx, eax
sub edi, dword [ebp - 0x48]
mov dword [ebp - 4], edi
sbb ebx, dword [ebp - 0x30]
test esi, esi
je 0x4c74f7
mov eax, dword [ebp - 0x1c]
and eax, 0x3c
cmp al, 0x30
jb 0x4c7486
add esi, dword [ebp - 0x24]
cmp esi, 1
jle 0x4c7420
lea ecx, [esi + 0xb]
mov eax, edi
mov edx, ebx
call fcn.004f7860
mov ebx, edx
mov ecx, 0x35
sub ecx, esi
xor edx, edx
xor esi, esi
bts edx, ecx
cmp ecx, 0x20
cmovae esi, edx
xor edx, esi
cmp ecx, 0x40
cmovae esi, edx
add edx, 0xffffffff
adc esi, 0xffffffff
and eax, edx
and ebx, esi
and edi, 0xfff
shld ebx, eax, 0xc
shl eax, 0xc
or edi, eax
mov dword [ebp - 4], edi
mov esi, dword [ebp - 8]
mov eax, edi
mov edx, ebx
lea ecx, [esi + 1]
call fcn.004f7860
xor edi, edi
mov ecx, 0x3f
sub ecx, esi
xor esi, esi
bts esi, ecx
cmp ecx, 0x20
cmovae edi, esi
xor esi, edi
cmp ecx, 0x40
cmovae edi, esi
add esi, 0xffffffff
adc edi, 0xffffffff
and eax, esi
and edx, edi
mov edi, dword [ebp - 8]
mov ecx, edi
call fcn.004f7b60
xor ecx, ecx
xor esi, esi
bts ecx, edi
cmp edi, 0x20
cmovae esi, ecx
xor ecx, esi
cmp edi, 0x40
cmovae esi, ecx
add ecx, 0xffffffff
adc esi, 0xffffffff
and ecx, dword [ebp - 4]
or eax, ecx
mov edi, eax
mov dword [ebp - 4], edi
jmp 0x4c74f3
mov eax, dword [ebp - 0x50]
xor edi, edi
mov ecx, dword [ebp - 0x24]
add eax, esi
add ecx, eax
xor esi, esi
mov eax, 0x40
sub eax, ecx
sub eax, edx
bts esi, eax
cmp eax, 0x20
cmovae edi, esi
xor esi, edi
cmp eax, 0x40
mov eax, dword [ebp - 4]
cmovae edi, esi
add esi, 0xffffffff
adc edi, 0xffffffff
add ecx, edx
mov edx, ebx
call fcn.004f7860
and edx, edi
and eax, esi
mov edi, dword [ebp - 8]
mov ecx, edi
call fcn.004f7b60
xor ecx, ecx
xor esi, esi
bts ecx, edi
cmp edi, 0x20
cmovae esi, ecx
xor ecx, esi
cmp edi, 0x40
cmovae esi, ecx
add ecx, 0xffffffff
adc esi, 0xffffffff
and ecx, dword [ebp - 4]
or eax, ecx
mov edi, eax
mov dword [ebp - 4], eax
and ebx, esi
or ebx, edx
mov eax, dword [ebp - 0x28]
mov eax, dword [eax - 0x30]
test al, 1
je 0x4c7519
cmp word [ebp - 0x20], 1
jne 0x4c7519
shr eax, 0xc
mov ecx, 0x10000000
mul ecx
add edi, eax
mov dword [ebp - 4], edi
adc ebx, edx
mov esi, dword [ebp - 0xc]
xor edx, edx
mov edi, dword [ebp - 0x10]
mov eax, esi
shl eax, 4
add eax, 0x42c
mov dword [ebp - 0x1c], esi
add eax, edi
mov dword [ebp - 8], edx
mov dword [ebp - 0x20], eax
nop word [eax + eax]
mov ecx, dword [eax]
test cl, 1
je 0x4c75d7
xor eax, eax
and ecx, 0xfffffffe
shld eax, ecx, 8
push dword [ebp - 8]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 8]
shl ecx, 8
mov dword [ebp - 0x14], ecx
mov ecx, dword [eax + 0x94]
mov eax, edx
cdq
sub eax, edx
imul ecx, esi
sar eax, 1
xor edx, edx
not edx
add ecx, eax
mov eax, dword [edi + ecx*4 + 0x5ac]
shr eax, 1
not eax
shld edx, eax, 9
shl eax, 9
mov ecx, edx
and ecx, dword [ebp - 0x30]
mov edi, eax
and edi, dword [ebp - 0x14]
mov esi, eax
push ecx
push edi
mov dword [ebp - 0x2c], edx
and edx, ebx
push edx
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
and esi, eax
push esi
push ebx
push eax
push str.zen2_decode_addr___C__p__p__p__d_
push 0xffffffffffffffff
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x50], edx
call fcn.004bf690
add esp, 0x24
cmp esi, edi
jne 0x4c75cb
mov eax, dword [ebp - 0x50]
cmp eax, dword [ebp - 0x48]
je 0x4c7645
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 8]
inc edx
add eax, 4
mov dword [ebp - 8], edx
mov dword [ebp - 0x20], eax
cmp edx, 4
jl 0x4c7540
mov edi, dword [ebp - 0x40]
mov eax, dword [ebp - 0xc]
test eax, eax
jns 0x4c7611
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x44]
add dword [ebp - 0x28], 4
inc ecx
mov dword [ebp - 0x44], ecx
cmp ecx, dword [edx + 0x90]
mov edx, dword [ebp - 0x10]
jl 0x4c6f55
mov esi, dword [ebp - 0x1c]
mov ecx, dword [ebp - 4]
mov edx, dword [ebp + 0x14]
test edx, edx
je 0x4c7620
mov dword [edx], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x4c7629
mov dword [eax], esi
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x4c7632
mov dword [eax], edi
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4c763e
mov dword [eax], ecx
mov dword [eax + 4], ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x10]
xor edi, edi
mov eax, dword [ebp - 0xc]
mov edx, dword [esi + eax*8 + 0x1ec]
mov ecx, edx
mov eax, dword [esi + eax*8 + 0x1f0]
and ecx, 1
mov esi, eax
mov dword [ebp - 0x3c], ecx
and esi, 0xfffffffe
mov ecx, eax
shld edi, esi, 8
and ecx, 1
or eax, edx
shl esi, 8
mov dword [ebp - 0x24], ecx
test al, 1
je 0x4c7707
cmp dword [ebp - 0x3c], 0
xorps xmm0, xmm0
mov ecx, dword [ebp - 4]
movlpd qword [ebp - 0x54], xmm0
movlpd qword [ebp - 0x4c], xmm0
je 0x4c76ad
and edx, 0xfffffffe
xor eax, eax
shld eax, edx, 8
shl edx, 8
and edx, ecx
and eax, ebx
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0x24], 0
je 0x4c76bd
and esi, ecx
and edi, ebx
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x48], edi
xor edx, edx
xor esi, esi
xor ecx, ecx
movq xmm1, qword [ebp - 0x54]
movd xmm0, ecx
psrlq xmm1, xmm0
movd xmm0, ecx
inc ecx
movd eax, xmm1
movq xmm1, qword [ebp - 0x4c]
psrlq xmm1, xmm0
and eax, 1
xor edx, eax
movd eax, xmm1
and eax, 1
xor esi, eax
cmp ecx, 0x3f
jl 0x4c76c3
mov eax, dword [ebp - 8]
lea edi, [esi + esi]
mov ecx, dword [ebp - 0x24]
or edi, edx
xor edi, eax
mov dword [ebp - 0x40], edi
jmp 0x4c770f
mov eax, dword [ebp - 8]
mov edi, eax
mov dword [ebp - 0x40], eax
or ecx, dword [ebp - 0x3c]
push ecx
push dword [ebp - 0x2c]
push dword [ebp - 0x18]
push dword [ebp - 0x30]
push dword [ebp - 0x14]
push eax
push edi
push dword [ebp - 0xc]
push ebx
push dword [ebp - 4]
push str.zen2_decode_addr___D__p__d__d__d__p__p__d_
push 0xffffffffffffffff
call fcn.004bf690
add esp, 0x30
jmp 0x4c75ed