Function at 0x4cc120
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x40
mov eax, dword [ecx]
mov dword [esp + 0x14], eax
test byte [eax + 0x21], 0x40
je 0x4cc13b
mov ebp, edx
cmp byte [edx + 0x2b], 0
je 0x4cc143
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 8], ecx
mov esi, dword [ebp + 0x3c]
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x10]
test esi, esi
je 0x4cc16c
lea ecx, [eax + 0xc]
mov edi, 0xffffffff
nop dword [eax]
inc edi
lea edx, [ecx + 0x10]
cmp dword [ecx], esi
mov ecx, edx
jne 0x4cc160
jmp 0x4cc171
mov edi, 0xffff8000
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + 0x97]
mov byte [esp + 7], cl
mov ebx, dword [ebp + 0x30]
test ebx, ebx
mov dword [esp + 0x20], ebp
je 0x4cc785
mov ecx, ebx
mov esi, edi
shl esi, 4
mov dword [esp + 0x34], esi
mov eax, dword [eax + esi]
mov dword [esp + 0x2c], eax
lea eax, [edx + 1]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x24], edi
mov edi, ebx
jmp 0x4cc1fb
lea ecx, [eax + 1]
mov dword [ebx + 0x6c], ecx
mov ecx, dword [ebx + 0x68]
lea eax, [eax + eax*4]
mov dword [ecx + eax*4], 0x9e
mov dword [ecx + eax*4 + 4], esi
mov dword [ecx + eax*4 + 8], 0xffffffff
mov dword [ecx + eax*4 + 0xc], 0
mov dword [ecx + eax*4 + 0x10], 0
nop word cs:[eax + eax]
mov edi, dword [edi + 4]
test edi, edi
je 0x4cc782
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x30], 0xffffffff
cmp dword [esp + 0x5c], 0
je 0x4cc2a0
mov ecx, dword [ebp]
mov esi, dword [edi + 8]
test ecx, ecx
je 0x4cc260
test esi, esi
je 0x4cc264
xor edx, edx
jmp 0x4cc240
movzx ebx, byte [ebx + 0x52a853]
cmp bl, byte [eax + 0x52a853]
jne 0x4cc264
inc edx
movzx ebx, byte [ecx + edx]
movzx eax, byte [esi + edx]
cmp bl, al
jne 0x4cc230
test ebx, ebx
jne 0x4cc23f
jmp 0x4cc2a0
test esi, esi
je 0x4cc2a0
mov eax, dword [edi + 0x14]
test eax, eax
jle 0x4cc1f0
xor ecx, ecx
jmp 0x4cc279
inc ecx
cmp eax, ecx
je 0x4cc1f0
mov edx, dword [edi + ecx*8 + 0x24]
mov esi, dword [esp + 0x5c]
cmp dword [esi + edx*4], 0
jns 0x4cc2a0
cmp dword [esp + 0x60], 0
je 0x4cc270
movsx esi, word [ebp + 0x20]
cmp edx, esi
jne 0x4cc270
nop word cs:[eax + eax]
mov esi, dword [esp + 8]
cmp byte [esi + 0x97], 0
mov eax, dword [edi + 8]
je 0x4cc2d0
mov ecx, dword [esp + 0x14]
mov edx, eax
push dword [esp + 0x2c]
call fcn.0043cbf0
add esp, 4
jmp 0x4cc2e1
mov ecx, esi
xor edx, edx
push dword [esp + 0x2c]
push eax
call fcn.00433f40
add esp, 8
mov ebx, eax
test eax, eax
mov dword [esp], edi
je 0x4cc309
mov ecx, esi
mov edx, ebx
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
push edi
call fcn.004cd910
add esp, 0xc
test eax, eax
je 0x4cc5dd
cmp byte [esp + 7], 0
je 0x4cc13b
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x57], 0
jne 0x4cc13b
test ebx, ebx
jne 0x4cc1f0
mov ecx, dword [esp + 8]
mov ebx, dword [ecx + 8]
test ebx, ebx
jne 0x4cc34e
cmp dword [ecx + 0x74], 0
jne 0x4cc347
mov eax, dword [ecx]
test byte [eax + 0x50], 8
jne 0x4cc347
mov byte [ecx + 0x17], 1
call fcn.004346f0
mov ebx, eax
mov eax, dword [ebx + 0x6c]
mov ecx, dword [edi + 0x14]
test ecx, ecx
jle 0x4cc678
add eax, ecx
inc eax
mov dword [esp + 0x28], eax
xor esi, esi
jmp 0x4cc3a9
lea edx, [ecx + 1]
mov dword [ebx + 0x6c], edx
mov edx, dword [ebx + 0x68]
lea ecx, [ecx + ecx*4]
mov dword [edx + ecx*4], 0x32
mov dword [edx + ecx*4 + 4], eax
mov eax, dword [esp + 0x28]
mov dword [edx + ecx*4 + 8], eax
mov dword [edx + ecx*4 + 0xc], 0
mov dword [edx + ecx*4 + 0x10], 0
inc esi
cmp esi, dword [edi + 0x14]
jge 0x4cc675
mov eax, dword [edi + esi*8 + 0x24]
test ax, ax
js 0x4cc5b1
mov ecx, dword [edi]
mov edx, dword [ecx + 0x1c]
and edx, 0x20
je 0x4cc5b1
movsx edx, ax
mov dword [esp + 0x10], edx
xor edi, edi
mov dword [esp + 0x38], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 0xc], ecx
test ax, ax
je 0x4cc583
mov ebp, eax
shl ebp, 0x10
mov edx, 0
cmp ebp, 0x110000
jb 0x4cc553
mov edx, eax
and edx, 0xf
mov ecx, 0x10
cmove edx, ecx
mov edi, dword [esp + 0x10]
sub edi, edx
mov ecx, dword [esp + 0xc]
lea ebp, [ecx + 0xbe]
pxor xmm0, xmm0
mov edx, edi
pxor xmm1, xmm1
movdqa xmm7, xmmword [0x529680]
nop word cs:[eax + eax]
movzx ecx, word [ebp - 0x60]
movd xmm2, ecx
movzx ecx, word [ebp - 0x6c]
movd xmm4, ecx
punpcklwd xmm4, xmm2
movzx ecx, word [ebp - 0x78]
movd xmm2, ecx
movzx ecx, word [ebp - 0x84]
movd xmm3, ecx
punpcklwd xmm3, xmm2
punpckldq xmm3, xmm4
movzx ecx, word [ebp - 0x90]
movd xmm2, ecx
movzx ecx, word [ebp - 0x9c]
movd xmm4, ecx
punpcklwd xmm4, xmm2
movzx ecx, word [ebp - 0xa8]
movd xmm5, ecx
movzx ecx, word [ebp - 0xb4]
movd xmm2, ecx
punpcklwd xmm2, xmm5
punpckldq xmm2, xmm4
punpcklqdq xmm2, xmm3
movzx ecx, word [ebp]
movd xmm3, ecx
movzx ecx, word [ebp - 0xc]
movd xmm5, ecx
punpcklwd xmm5, xmm3
movzx ecx, word [ebp - 0x18]
movd xmm3, ecx
movzx ecx, word [ebp - 0x24]
movd xmm4, ecx
punpcklwd xmm4, xmm3
punpckldq xmm4, xmm5
movzx ecx, word [ebp - 0x30]
movd xmm3, ecx
movzx ecx, word [ebp - 0x3c]
movd xmm5, ecx
punpcklwd xmm5, xmm3
movzx ecx, word [ebp - 0x48]
movd xmm6, ecx
movzx ecx, word [ebp - 0x54]
movd xmm3, ecx
punpcklwd xmm3, xmm6
punpckldq xmm3, xmm5
punpcklqdq xmm3, xmm4
pcmpeqd xmm4, xmm4
pxor xmm2, xmm4
psrlw xmm2, 5
pand xmm2, xmm7
paddw xmm0, xmm2
pxor xmm3, xmm4
psrlw xmm3, 5
pand xmm3, xmm7
paddw xmm1, xmm3
add ebp, 0xc0
add edx, 0xfffffff0
jne 0x4cc430
paddw xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddw xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddw xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
paddw xmm0, xmm1
movd edx, xmm0
mov ebp, dword [esp + 0x10]
sub ebp, edi
lea ecx, [edi + edi*2]
mov edi, dword [esp + 0xc]
lea edi, [edi + ecx*4]
add edi, 0xa
nop word cs:[eax + eax]
movzx ecx, word [edi]
bt ecx, 5
sbb dx, 0xffff
add edi, 0xc
dec ebp
jne 0x4cc570
jmp 0x4cc585
xor edx, edx
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + ecx*2]
mov edi, dword [esp + 0xc]
test byte [edi + ecx*4 + 0xa], 0x20
jne 0x4cc5a0
mov eax, edx
jmp 0x4cc5aa
sub eax, edx
mov ecx, dword [esp + 0x38]
add ax, word [ecx + 0x24]
mov ebp, dword [esp + 0x20]
mov edi, dword [esp]
cwde
add eax, dword [esp + 0x3c]
mov ecx, dword [ebx + 0x6c]
cmp dword [ebx + 0x70], ecx
jg 0x4cc370
mov ecx, ebx
mov edx, 0x32
push 0
push dword [esp + 0x2c]
push eax
call fcn.004747e0
add esp, 0xc
jmp 0x4cc39f
mov esi, dword [esp + 0x18]
test esi, esi
jne 0x4cc5f0
mov eax, dword [edi + 0x24]
mov dword [esp + 0x30], eax
lea esi, [esp + 0x30]
cmp dword [edi + 0x14], 0
mov dword [esp + 0x10], ebx
jle 0x4cc69e
mov edi, dword [esp + 0x1c]
lea eax, [ebx + 0x20]
mov dword [esp + 0xc], eax
xor ecx, ecx
xor ebx, ebx
jmp 0x4cc648
mov ecx, dword [esp + 0x10]
mov ebp, dword [ecx + 4]
movsx eax, word [eax]
lea eax, [eax + eax*2]
mov edx, dword [ecx]
mov ecx, dword [esp + 8]
push dword [esp + 0x24]
push dword [ebp + eax*4]
call fcn.004a3560
add esp, 8
xor ecx, ecx
cmp eax, 2
sete cl
mov ebp, dword [esp + 0x20]
inc ebx
mov eax, dword [esp]
cmp ebx, dword [eax + 0x14]
jge 0x4cc6a0
movsx eax, word [ebp + 0x20]
cmp dword [esi + ebx*4], eax
jne 0x4cc658
mov dword [esi + ebx*4], 0xffffffff
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x168], 0
je 0x4cc63f
mov eax, dword [esp + 0xc]
test edi, edi
je 0x4cc610
lea eax, [ebx + ebx]
add eax, dword [edi + 4]
jmp 0x4cc610
mov eax, dword [ebx + 0x6c]
movzx esi, byte [edi + 0x18]
cmp dword [ebx + 0x70], eax
jg 0x4cc1b4
mov ecx, ebx
mov edx, 0x9e
push 0
push 0xffffffffffffffff
push esi
call fcn.004747e0
add esp, 0xc
jmp 0x4cc1f0
xor ecx, ecx
mov dword [esp + 0xc], ecx
cmp dword [esp + 0x24], 1
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x10]
je 0x4cc6db
mov eax, dword [edi]
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x34]
mov eax, dword [eax + ecx + 4]
cmp byte [eax + 9], 0
je 0x4cc6db
mov ecx, edi
mov edx, dword [esp + 0x24]
push dword [ebx]
push 0
push dword [ebx + 0x14]
call fcn.00493e60
add esp, 0xc
inc dword [edi + 0x28]
mov eax, dword [esp + 0x54]
test eax, eax
je 0x4cc705
mov ecx, edi
mov edx, dword [esp + 0x24]
push dword [esp + 0xc]
push 0xffffffffffffffff
push eax
push esi
push dword [esp + 0x10]
push dword [esp + 0x30]
push ebx
call fcn.004ce410
add esp, 0x1c
mov edi, dword [esp + 0x58]
test edi, edi
je 0x4cc765
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x74]
test eax, eax
cmove eax, ecx
mov eax, dword [eax + 0x7c]
test eax, eax
je 0x4cc744
mov eax, dword [eax]
mov ecx, dword [esp]
cmp eax, dword [ecx + 0x1c]
jne 0x4cc733
mov ecx, dword [esp]
cmp byte [ecx + 0x19], 8
je 0x4cc765
mov ecx, dword [esp]
cmp eax, dword [ecx + 0x20]
jne 0x4cc744
mov eax, dword [esp]
cmp byte [eax + 0x1a], 8
je 0x4cc765
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x24]
push dword [esp + 0xc]
push 1
push edi
push esi
push dword [esp + 0x10]
push dword [esp + 0x30]
push ebx
call fcn.004ce410
add esp, 0x1c
mov edx, dword [esp + 0x18]
test edx, edx
mov edi, dword [esp]
je 0x4cc1f0
mov ecx, dword [esp + 0x14]
call fcn.0043f4f0
jmp 0x4cc1f0
mov esi, dword [ebp + 0x3c]
mov ecx, dword [ebp]
mov edi, dword [esi + 0x44]
test edi, edi
je 0x4cc7bc
movzx ebx, byte [ecx]
test bl, bl
je 0x4cc7c4
lea edx, [ecx + 1]
xor eax, eax
nop dword [eax + eax]
movzx ebx, bl
movzx ebx, byte [ebx + 0x52a853]
add ebx, eax
imul eax, ebx, 0x9e3779b1
movzx ebx, byte [edx]
inc edx
test bl, bl
jne 0x4cc7a0
jmp 0x4cc7c6
lea ebp, [esi + 0x40]
add esi, 0x3c
jmp 0x4cc7d4
xor eax, eax
xor edx, edx
div dword [esi + 0x38]
lea esi, [edi + edx*8]
lea ebp, [edi + edx*8]
add ebp, 4
mov esi, dword [esi]
mov eax, 0x53e0d4
test esi, esi
je 0x4cc81f
mov ebp, dword [ebp]
dec esi
mov edi, dword [ebp + 0xc]
xor ebx, ebx
jmp 0x4cc800
movzx edx, byte [edx + 0x52a853]
cmp dl, byte [eax + 0x52a853]
jne 0x4cc812
inc ebx
movzx edx, byte [edi + ebx]
movzx eax, byte [ecx + ebx]
cmp dl, al
jne 0x4cc7f0
test edx, edx
jne 0x4cc7ff
jmp 0x4cc81d
test esi, esi
jne 0x4cc7df
mov eax, 0x53e0d4
jmp 0x4cc81f
mov eax, ebp
mov edi, dword [eax + 8]
test edi, edi
je 0x4cc13b
xor eax, eax
cmp dword [esp + 0x5c], 0
setne al
mov dword [esp + 0x28], eax
jmp 0x4cc84b
mov edi, dword [edi + 0xc]
test edi, edi
je 0x4cc13b
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
cmp dword [esp + 0x5c], 0
je 0x4cc940
mov eax, dword [edi + 0x14]
mov dword [esp + 0xc], eax
test eax, eax
mov eax, dword [esp + 0x20]
jle 0x4cc840
movsx eax, word [eax + 0x22]
mov dword [esp + 0x10], 0
mov dword [esp], eax
test ax, ax
jle 0x4cc920
mov ecx, dword [esp + 0x10]
mov esi, dword [edi + ecx*8 + 0x28]
xor ebx, ebx
jmp 0x4cc8b3
test byte [eax + ecx*4 + 0xa], 1
jne 0x4cc940
inc ebx
mov eax, dword [esp]
cmp ebx, eax
je 0x4cc920
mov eax, dword [esp + 0x5c]
cmp dword [eax + ebx*4], 0
jns 0x4cc8d0
cmp dword [esp + 0x60], 0
je 0x4cc8ab
mov eax, dword [esp + 0x20]
movsx eax, word [eax + 0x20]
cmp ebx, eax
jne 0x4cc8ab
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 4]
lea ecx, [ebx + ebx*2]
test esi, esi
je 0x4cc8a0
mov ebp, dword [eax + ecx*4]
xor eax, eax
jmp 0x4cc900
movzx ecx, byte [ecx + 0x52a853]
cmp cl, byte [edx + 0x52a853]
jne 0x4cc8ab
inc eax
movzx ecx, byte [ebp + eax]
movzx edx, byte [esi + eax]
cmp cl, dl
jne 0x4cc8f0
test ecx, ecx
jne 0x4cc8ff
jmp 0x4cc940
mov edx, dword [esp + 0x10]
inc edx
mov ecx, edx
mov dword [esp + 0x10], edx
cmp edx, dword [esp + 0xc]
jne 0x4cc884
jmp 0x4cc840
cmp byte [edi + 0x18], 0
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 8]
jne 0x4cc970
mov eax, dword [esp + 0x14]
test byte [eax + 0x22], 8
jne 0x4cc970
cmp dword [esi + 0x74], 0
jne 0x4cc970
cmp byte [esi + 0x14], 0
je 0x4cc840
nop dword [eax + eax]
mov ecx, esi
mov edx, ebp
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
push edi
call fcn.004cd910
add esp, 0xc
test eax, eax
je 0x4cc9b0
cmp byte [esp + 7], 0
je 0x4cc13b
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x57], 0
je 0x4cc840
jmp 0x4cc13b
mov ecx, dword [esi]
mov edx, 0x48
push 0
call fcn.0043f5f0
add esp, 4
test eax, eax
je 0x4cca98
mov ebx, eax
mov dword [eax + 4], 1
mov dword [eax], 1
pxor xmm0, xmm0
movdqu xmmword [eax + 0x28], xmm0
movdqu xmmword [eax + 8], xmm0
movdqu xmmword [eax + 0x18], xmm0
movdqu xmmword [eax + 0x38], xmm0
mov dword [eax + 0x30], 0xffffffff
mov dword [eax + 0xc], 0
mov eax, dword [edi]
mov dword [ebx + 0x18], eax
mov ecx, dword [edi]
mov ecx, dword [ecx]
mov dword [ebx + 0x10], ecx
inc dword [eax + 0x18]
mov eax, dword [esi + 0x28]
lea ecx, [eax + 1]
mov dword [esi + 0x28], ecx
mov dword [ebx + 0x30], eax
mov eax, dword [esp + 0x58]
test eax, eax
je 0x4cca3a
mov ecx, esi
mov edx, ebx
push 0xffffffffffffffff
push eax
push dword [esp + 0x20]
push edi
push dword [esp + 0x2c]
push ebp
call fcn.004cf740
add esp, 0x18
cmp dword [esp + 0x54], 0
je 0x4cca86
mov eax, dword [esp + 0x28]
movzx esi, byte [edi + eax + 0x19]
mov ecx, dword [esp + 8]
mov edx, ebx
push 1
push dword [esp + 0x58]
push dword [esp + 0x20]
push edi
push dword [esp + 0x2c]
push ebp
call fcn.004cf740
add esp, 0x18
cmp byte [edi + 0x18], 0
jne 0x4cca86
or esi, 2
cmp esi, 0xa
je 0x4cca86
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x74]
test eax, eax
cmove eax, ecx
mov byte [eax + 0x15], 1
mov dword [ebx + 0x10], 0
mov ecx, dword [esp + 0x14]
mov edx, ebx
call fcn.00469630
mov edx, dword [esp + 0x18]
test edx, edx
je 0x4cc840
mov ecx, dword [esp + 0x14]
call fcn.0043f4f0
jmp 0x4cc840