Function at 0xcd80a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov eax, 0x15b4
call fcn.00cd8bd0
mov edi, ecx
mov ecx, dword [esp + 0x15c8]
pxor xmm0, xmm0
movdqu xmmword [esp + 0x30], xmm0
movdqu xmmword [esp + 0x40], xmm0
movdqu xmmword [esp + 0x50], xmm0
movdqu xmmword [esp + 0x60], xmm0
movdqu xmmword [esp + 0x70], xmm0
movdqu xmmword [esp + 0x80], xmm0
movdqu xmmword [esp + 0x90], xmm0
movdqu xmmword [esp + 0xa0], xmm0
mov dword [esp + 0xb0], 0
cmp dword [esp + 0x15d0], 0
mov dword [esp + 0x1c], edx
je 0xcd818c
test ecx, ecx
jle 0xcd8a30
xor eax, eax
cmp ecx, 1
je 0xcd8158
and ecx, 0xfffffffe
mov eax, dword [esp + 0x1c]
lea eax, [eax + eax*8]
shl eax, 5
lea edx, [eax + edi]
add edx, 0x8f13
xor eax, eax
nop word cs:[eax + eax]
movzx esi, byte [edx + eax - 1]
inc dword [esp + esi*4 + 0x30]
movzx esi, byte [edx + eax]
inc dword [esp + esi*4 + 0x30]
add eax, 2
cmp ecx, eax
jne 0xcd8140
mov ecx, dword [esp + 0x15c8]
test cl, 1
je 0xcd8a30
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + ecx*8]
shl ecx, 5
add ecx, edi
movzx eax, byte [eax + ecx + 0x8f12]
mov ecx, dword [esp + 0x15c8]
inc dword [esp + eax*4 + 0x30]
jmp 0xcd8a30
lea ebp, [edx + edx*8]
mov eax, ebp
shl eax, 6
mov dword [esp + 0x18], eax
test ecx, ecx
mov dword [esp + 0x10], edi
jle 0xcd8289
cmp ecx, 1
jne 0xcd84eb
xor eax, eax
xor ebx, ebx
mov ecx, dword [esp + 0x15c8]
test cl, 1
je 0xcd81e7
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
add ecx, edx
add ecx, 0x8192
movzx ecx, word [ecx + eax*2]
test cx, cx
je 0xcd81e7
mov word [esp + ebx*4 + 0x4b4], cx
mov word [esp + ebx*4 + 0x4b6], ax
inc ebx
lea eax, [esp + 0x934]
push 0x800
push 0
push eax
call fcn.00cd8e50
add esp, 0xc
test ebx, ebx
sete byte [esp + 0xb]
je 0xcd82a0
xor eax, eax
cmp ebx, 1
je 0xcd825f
mov ecx, ebx
and ecx, 0xfffffffe
xor eax, eax
nop dword [eax]
movzx edx, word [esp + eax*4 + 0x4b4]
movzx esi, dl
inc dword [esp + esi*4 + 0x934]
shr edx, 8
inc dword [esp + edx*4 + 0xd34]
movzx edx, word [esp + eax*4 + 0x4b8]
movzx esi, dl
inc dword [esp + esi*4 + 0x934]
shr edx, 8
inc dword [esp + edx*4 + 0xd34]
add eax, 2
cmp ecx, eax
jne 0xcd8220
test bl, 1
je 0xcd8280
movzx eax, word [esp + eax*4 + 0x4b4]
movzx ecx, al
inc dword [esp + ecx*4 + 0x934]
shr eax, 8
inc dword [esp + eax*4 + 0xd34]
mov eax, dword [esp + 0xd34]
jmp 0xcd82a9
lea eax, [esp + 0x934]
push 0x800
push 0
push eax
call fcn.00cd8e50
add esp, 0xc
xor ebx, ebx
mov byte [esp + 0xb], 1
xor eax, eax
xor ecx, ecx
cmp eax, ebx
sete cl
mov edi, 2
sub edi, ecx
lea eax, [ebx - 1]
mov dword [esp + 0x20], eax
mov eax, ebx
and eax, 0xfffffffe
mov dword [esp + 0x24], eax
xor esi, esi
lea eax, [esp + 0x4b4]
mov dword [esp], eax
lea eax, [esp + 0x1134]
lea edx, [esp + 0x934]
xor ecx, ecx
mov dword [esp + 0x14], ebp
mov dword [esp + 0xc], ebx
mov dword [esp + 0x28], edi
jmp 0xcd831a
mov esi, dword [esp + 0x2c]
inc esi
add ecx, 8
add edx, 0x400
mov eax, dword [esp + 4]
cmp esi, edi
je 0xcd8429
mov dword [esp + 0x2c], esi
mov esi, dword [esp]
mov dword [esp + 4], esi
mov dword [esp], eax
mov eax, 3
xor esi, esi
nop
mov dword [esp + eax*4 + 0xa8], esi
add esi, dword [edx + eax*4 - 0xc]
mov dword [esp + eax*4 + 0xac], esi
add esi, dword [edx + eax*4 - 8]
mov dword [esp + eax*4 + 0xb0], esi
add esi, dword [edx + eax*4 - 4]
mov dword [esp + eax*4 + 0xb4], esi
add esi, dword [edx + eax*4]
add eax, 4
cmp eax, 0x103
jne 0xcd8330
cmp byte [esp + 0xb], 0
jne 0xcd8300
cmp dword [esp + 0x20], 0
je 0xcd83da
xor eax, eax
mov edi, dword [esp]
mov ebp, dword [esp + 4]
nop dword [eax]
movzx ebx, word [ebp + eax*4]
shr ebx, cl
movzx esi, bl
mov ebx, dword [esp + esi*4 + 0xb4]
lea ebp, [ebx + 1]
mov dword [esp + esi*4 + 0xb4], ebp
mov esi, dword [esp + 4]
mov esi, dword [esi + eax*4]
mov dword [edi + ebx*4], esi
mov esi, dword [esp + 4]
movzx ebx, word [esi + eax*4 + 4]
shr ebx, cl
movzx esi, bl
mov ebx, dword [esp + esi*4 + 0xb4]
lea ebp, [ebx + 1]
mov dword [esp + esi*4 + 0xb4], ebp
mov ebp, dword [esp + 4]
mov esi, dword [ebp + eax*4 + 4]
mov dword [edi + ebx*4], esi
add eax, 2
cmp dword [esp + 0x24], eax
jne 0xcd8380
jmp 0xcd83dc
xor eax, eax
mov ebx, dword [esp + 0xc]
test bl, 1
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
je 0xcd8300
mov edi, dword [esp + 4]
movzx ebx, word [edi + eax*4]
shr ebx, cl
movzx esi, bl
mov ebx, dword [esp + esi*4 + 0xb4]
lea ebp, [ebx + 1]
mov dword [esp + esi*4 + 0xb4], ebp
mov ebp, dword [esp + 0x14]
mov eax, dword [edi + eax*4]
mov edi, dword [esp + 0x28]
mov esi, dword [esp]
mov dword [esi + ebx*4], eax
mov ebx, dword [esp + 0xc]
jmp 0xcd8300
test ebx, ebx
je 0xcd890a
cmp ebx, 1
jne 0xcd8443
mov eax, dword [esp]
mov word [eax], 1
jmp 0xcd86ea
mov edx, dword [esp]
movzx eax, word [edx + 4]
add word [edx], ax
cmp ebx, 3
jl 0xcd8555
mov eax, 2
mov ecx, 2
sub ecx, ebx
mov dword [esp + 4], ecx
xor edx, edx
mov esi, 1
jmp 0xcd8493
movzx ebx, word [ecx + edx*4]
add word [ecx + esi*4], bx
mov word [ecx + edx*4], si
inc edx
mov ecx, dword [esp + 4]
lea edi, [ecx + esi]
inc edi
inc esi
cmp edi, 1
mov ebx, dword [esp + 0xc]
je 0xcd8564
mov ecx, dword [esp]
movzx edi, word [ecx + edx*4]
cmp eax, ebx
jge 0xcd84a7
movzx ebx, word [ecx + eax*4]
cmp di, bx
jae 0xcd84c0
mov word [ecx + esi*4], di
mov word [ecx + edx*4], si
inc edx
cmp eax, dword [esp + 0xc]
jge 0xcd8470
jmp 0xcd84cb
inc eax
mov word [ecx + esi*4], bx
cmp eax, dword [esp + 0xc]
jge 0xcd8470
cmp edx, esi
jge 0xcd84e0
movzx ebx, word [ecx + edx*4]
movzx edi, word [ecx + eax*4]
cmp bx, di
jb 0xcd8474
jmp 0xcd84e4
movzx edi, word [ecx + eax*4]
inc eax
add word [ecx + esi*4], di
jmp 0xcd847d
and ecx, 0xfffffffe
mov eax, dword [esp + 0x18]
lea edx, [eax + edi]
add edx, 0x8194
xor eax, eax
xor ebx, ebx
jmp 0xcd851b
add eax, 2
cmp ecx, eax
je 0xcd81b1
movzx esi, word [edx + eax*2 - 2]
test si, si
je 0xcd8536
mov word [esp + ebx*4 + 0x4b4], si
mov word [esp + ebx*4 + 0x4b6], ax
inc ebx
movzx esi, word [edx + eax*2]
test si, si
je 0xcd8510
mov word [esp + ebx*4 + 0x4b4], si
lea esi, [eax + 1]
mov word [esp + ebx*4 + 0x4b6], si
inc ebx
jmp 0xcd8510
lea ecx, [ebx - 2]
mov word [edx + ebx*4 - 8], 0
jmp 0xcd8601
lea ecx, [ebx - 2]
mov eax, dword [esp]
mov word [eax + ebx*4 - 8], 0
lea eax, [ebx - 3]
mov esi, ecx
mov dword [esp + 4], eax
and esi, 3
je 0xcd85aa
mov eax, dword [esp + 4]
nop word cs:[eax + eax]
mov edi, dword [esp]
movzx edi, word [edi + eax*4]
mov edx, dword [esp]
movzx edi, word [edx + edi*4]
inc edi
mov edx, dword [esp]
mov word [edx + eax*4], di
dec eax
dec esi
jne 0xcd8590
cmp dword [esp + 4], 3
jb 0xcd8601
inc eax
mov esi, dword [esp]
nop word cs:[eax + eax]
movzx edx, word [esi + eax*4 - 4]
movzx edx, word [esi + edx*4]
inc edx
mov word [esi + eax*4 - 4], dx
movzx edx, word [esi + eax*4 - 8]
movzx edx, word [esi + edx*4]
inc edx
mov word [esi + eax*4 - 8], dx
movzx edx, word [esi + eax*4 - 0xc]
movzx edx, word [esi + edx*4]
inc edx
mov word [esi + eax*4 - 0xc], dx
movzx edx, word [esi + eax*4 - 0x10]
movzx edx, word [esi + edx*4]
inc edx
mov word [esi + eax*4 - 0x10], dx
add eax, 0xfffffffc
jne 0xcd85c0
mov esi, 1
xor edx, edx
mov eax, dword [esp + 0x20]
jmp 0xcd8620
lea esi, [ebx + ebx]
inc edx
test ebx, ebx
mov ebx, dword [esp + 0xc]
jle 0xcd86e2
test ecx, ecx
js 0xcd8650
lea edi, [ecx + 1]
mov dword [esp + 4], edi
xor edi, edi
nop dword [eax]
mov ebx, dword [esp]
movzx ebx, word [ebx + ecx*4]
cmp edx, ebx
jne 0xcd8660
inc edi
dec ecx
cmp dword [esp + 4], edi
jne 0xcd8630
mov ecx, 0xffffffff
mov ebx, dword [esp + 4]
jmp 0xcd8662
xor ebx, ebx
jmp 0xcd8662
mov ebx, edi
mov edi, esi
sub edi, ebx
jle 0xcd8610
mov ebp, edi
mov edi, ebx
not edi
add edi, esi
and ebp, 3
mov dword [esp + 4], ebx
je 0xcd86a3
mov dword [esp + 0x24], edi
mov edi, dword [esp]
lea edi, [edi + eax*4]
xor ebx, ebx
nop word cs:[eax + eax]
mov word [edi], dx
inc ebx
add edi, 0xfffffffc
cmp ebp, ebx
jne 0xcd8690
sub esi, ebx
sub eax, ebx
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x14]
cmp edi, 3
mov edi, dword [esp]
mov ebx, dword [esp + 4]
jb 0xcd8610
nop word [eax + eax]
mov word [edi + eax*4], dx
mov word [edi + eax*4 - 4], dx
mov word [edi + eax*4 - 8], dx
mov word [edi + eax*4 - 0xc], dx
add eax, 0xfffffffc
add esi, 0xfffffffc
cmp esi, ebx
jg 0xcd86c0
jmp 0xcd8610
test ebx, ebx
jle 0xcd890a
mov eax, ebx
and eax, 3
xor ecx, ecx
cmp dword [esp + 0x20], 3
mov edi, dword [esp]
jb 0xcd873a
mov edx, ebx
and edx, 0xfffffffc
xor ecx, ecx
nop word cs:[eax + eax]
movzx esi, word [edi + ecx*4]
inc dword [esp + esi*4 + 0x30]
movzx esi, word [edi + ecx*4 + 4]
inc dword [esp + esi*4 + 0x30]
movzx esi, word [edi + ecx*4 + 8]
inc dword [esp + esi*4 + 0x30]
movzx esi, word [edi + ecx*4 + 0xc]
inc dword [esp + esi*4 + 0x30]
add ecx, 4
cmp edx, ecx
jne 0xcd8710
test eax, eax
je 0xcd875d
mov edx, dword [esp]
lea ecx, [edx + ecx*4]
xor edx, edx
nop word cs:[eax + eax]
movzx esi, word [ecx + edx*4]
inc dword [esp + esi*4 + 0x30]
inc edx
cmp eax, edx
jne 0xcd8750
cmp ebx, 2
jl 0xcd890a
mov ecx, dword [esp + 0x15cc]
cmp ecx, 0x1f
jg 0xcd87e0
mov eax, dword [esp + ecx*4 + 0x30]
mov edx, ecx
neg edx
mov esi, ecx
and edx, 3
je 0xcd879c
nop word cs:[eax + eax]
add eax, dword [esp + esi*4 + 0x34]
inc esi
mov dword [esp + ecx*4 + 0x30], eax
dec edx
jne 0xcd8790
lea edx, [ecx - 0x1d]
cmp edx, 3
jb 0xcd87d8
nop word cs:[eax + eax]
add eax, dword [esp + esi*4 + 0x34]
mov dword [esp + ecx*4 + 0x30], eax
add eax, dword [esp + esi*4 + 0x38]
mov dword [esp + ecx*4 + 0x30], eax
add eax, dword [esp + esi*4 + 0x3c]
mov dword [esp + ecx*4 + 0x30], eax
add eax, dword [esp + esi*4 + 0x40]
add esi, 4
mov dword [esp + ecx*4 + 0x30], eax
cmp esi, 0x20
jne 0xcd87b0
test ecx, ecx
jle 0xcd8b7e
cmp ecx, 1
mov ebp, ecx
adc ebp, 0xffffffff
inc ebp
xor edx, edx
mov eax, ecx
cmp ebp, 4
jb 0xcd88bf
mov esi, ebp
and esi, 0xfffffffc
mov eax, ecx
sub eax, esi
movd xmm0, ecx
pshufd xmm0, xmm0, 0
movdqa xmm1, xmmword [0xd0d410]
paddd xmm1, xmm0
mov edx, esi
neg edx
lea edi, [esp + ecx*4]
add edi, 0x24
pxor xmm2, xmm2
xor ebx, ebx
movdqa xmm3, xmmword [0xd0d420]
movdqa xmm4, xmmword [0xd0d430]
nop word cs:[eax + eax]
movdqu xmm5, xmmword [edi + ebx*4]
movdqa xmm6, xmm1
pxor xmm6, xmm0
movdqa xmm7, xmm1
pandn xmm7, xmm0
paddd xmm7, xmm7
psubd xmm7, xmm6
pshufd xmm6, xmm5, 0x1b
pslld xmm7, 0x17
paddd xmm7, xmm3
cvttps2dq xmm7, xmm7
pmuludq xmm6, xmm7
pshufd xmm7, xmm7, 0xf5
pshufd xmm5, xmm5, 0x4e
pmuludq xmm5, xmm7
pshufd xmm6, xmm6, 0xe8
pshufd xmm5, xmm5, 0xe8
punpckldq xmm6, xmm5
paddd xmm2, xmm6
paddd xmm1, xmm4
add ebx, 0xfffffffc
cmp edx, ebx
jne 0xcd8840
pshufd xmm0, xmm2, 0xee
paddd xmm0, xmm2
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd edx, xmm1
cmp ebp, esi
mov ecx, dword [esp + 0x15cc]
je 0xcd88f3
mov esi, eax
not esi
nop word cs:[eax + eax]
mov edi, dword [esp + eax*4 + 0x30]
mov ebx, eax
xor ebx, ecx
mov ebp, ecx
mov ecx, esi
and ecx, ebp
add ecx, ecx
sub ecx, ebx
shl edi, cl
add edx, edi
lea ecx, [eax - 1]
inc esi
cmp eax, 1
mov eax, ecx
mov ecx, ebp
ja 0xcd88d0
mov eax, 1
shl eax, cl
cmp edx, eax
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0xc]
jne 0xcd8b99
shl ebp, 5
mov esi, dword [esp + 0x10]
lea eax, [esi + ebp]
add eax, 0x8f12
push 0x120
push 0
push eax
call fcn.00cd8e50
add esp, 0xc
mov eax, dword [esp + 0x18]
add eax, esi
add eax, 0x8852
push 0x240
push 0
push eax
call fcn.00cd8e50
add esp, 0xc
cmp dword [esp + 0x15cc], 0
jle 0xcd8a25
add dword [esp], 0xfffffffe
mov eax, 1
jmp 0xcd8972
lea ecx, [eax + 1]
cmp eax, dword [esp + 0x15cc]
mov eax, ecx
je 0xcd8a25
mov edi, dword [esp + eax*4 + 0x30]
test edi, edi
jle 0xcd8960
mov edx, edi
and edx, 3
je 0xcd89d0
mov dword [esp + 4], edi
mov dword [esp + 0xc], ebx
mov ecx, dword [esp]
lea edi, [ecx + ebx*4]
xor esi, esi
nop word cs:[eax + eax]
movzx ebx, word [edi]
mov ecx, ebp
mov ebp, dword [esp + 0x10]
add ebp, ecx
mov byte [ebx + ebp + 0x8f12], al
mov ebp, ecx
inc esi
add edi, 0xfffffffc
cmp edx, esi
jne 0xcd89a0
mov edi, dword [esp + 4]
mov edx, edi
sub edx, esi
mov ecx, dword [esp + 0xc]
sub ecx, esi
jmp 0xcd89d4
mov ecx, ebx
mov edx, edi
cmp edi, 4
mov edi, dword [esp]
mov ebx, ecx
jb 0xcd8960
dec edx
nop
movzx ecx, word [edi + ebx*4]
mov esi, dword [esp + 0x10]
add esi, ebp
mov byte [ecx + esi + 0x8f12], al
movzx ecx, word [edi + ebx*4 - 4]
mov byte [ecx + esi + 0x8f12], al
movzx ecx, word [edi + ebx*4 - 8]
mov byte [ecx + esi + 0x8f12], al
movzx ecx, word [edi + ebx*4 - 0xc]
mov byte [ecx + esi + 0x8f12], al
add ebx, 0xfffffffc
add edx, 0xfffffffc
cmp edx, 0xfffffffe
jb 0xcd89e0
jmp 0xcd8960
mov ecx, dword [esp + 0x15c8]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x938], 0
mov eax, dword [esp + 0x15cc]
cmp eax, 2
jl 0xcd8aad
lea ecx, [eax - 1]
cmp eax, 2
jne 0xcd8a58
xor eax, eax
mov edx, 2
jmp 0xcd8a94
mov ebx, ecx
and ebx, 0xfffffffe
xor eax, eax
xor edx, edx
nop word cs:[eax + eax]
add eax, dword [esp + edx*4 + 0x34]
add eax, eax
mov dword [esp + edx*4 + 0x93c], eax
add eax, dword [esp + edx*4 + 0x38]
add eax, eax
mov dword [esp + edx*4 + 0x940], eax
add edx, 2
cmp ebx, edx
jne 0xcd8a70
add edx, 2
test cl, 1
mov ecx, dword [esp + 0x15c8]
je 0xcd8aad
add eax, dword [esp + edx*4 + 0x2c]
add eax, eax
mov dword [esp + edx*4 + 0x934], eax
test ecx, ecx
jle 0xcd8b73
xor eax, eax
mov edx, dword [esp + 0x1c]
lea edx, [edx + edx*8]
mov esi, edx
shl esi, 5
add esi, edi
mov dword [esp + 4], esi
shl edx, 6
add edx, edi
mov dword [esp + 0x10], edx
jmp 0xcd8af8
mov ecx, dword [esp + 0x10]
mov word [ecx + eax*2 + 0x8852], di
mov ecx, dword [esp + 0x15c8]
inc eax
cmp eax, ecx
je 0xcd8b73
mov edx, dword [esp + 4]
movzx ebx, byte [eax + edx + 0x8f12]
test ebx, ebx
je 0xcd8af3
mov edx, dword [esp + ebx*4 + 0x934]
lea edi, [edx + 1]
mov dword [esp + ebx*4 + 0x934], edi
xor edi, edi
cmp bl, 1
je 0xcd8b5b
mov ebp, ebx
and ebp, 0xfffffffe
xor edi, edi
nop word [eax + eax]
mov esi, edx
not esi
or esi, 1
add esi, edx
mov ecx, edx
shr ecx, 1
shl edi, 2
add esi, esi
add esi, 2
or esi, edi
mov edi, ecx
not edi
or edi, 1
add edi, ecx
inc edi
or edi, esi
shr edx, 2
add ebp, 0xfffffffe
jne 0xcd8b30
test bl, 1
je 0xcd8ae0
add edi, edi
mov ecx, edx
not ecx
or ecx, 1
add ecx, edx
inc ecx
or edi, ecx
jmp 0xcd8ae0
add esp, 0x15b4
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 1
shl eax, cl
xor edx, edx
jmp 0xcd8b99
dec edx
cmp edx, eax
je 0xcd890a
mov ecx, dword [esp + 0x15cc]
dec dword [esp + ecx*4 + 0x30]
nop word cs:[eax + eax]
cmp ecx, 2
jl 0xcd8b90
mov esi, dword [esp + ecx*4 + 0x2c]
dec ecx
test esi, esi
je 0xcd8bb0
dec esi
mov dword [esp + ecx*4 + 0x30], esi
add dword [esp + ecx*4 + 0x34], 2
jmp 0xcd8b90