Function at 0x2fd631
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x30
mov edx, ecx
mov eax, dword [edx + 0x80]
push ebx
push esi
push edi
mov edi, dword [eax + 0x80]
movzx eax, word [edi + 0x42a]
movzx ebx, byte [edi + 0x434]
mov ecx, eax
shr ecx, 5
and eax, 0x1f
mov esi, 0xff
and ecx, 3
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x28], eax
cmp ebx, esi
jne 0x2fd6a5
cmp ax, 7
jne 0x2fd6a5
test cx, cx
jne 0x2fd688
mov eax, dword [edi + 0x42c]
jmp 0x2fd68e
mov eax, dword [edi + 0x430]
movzx ecx, al
mov eax, ecx
shl eax, 8
or ecx, eax
mov eax, ecx
shl eax, 0x10
or eax, ecx
xor edx, edx
xor ecx, ecx
jmp 0x2fd704
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x28]
push eax
push dword [ebp - 0x28]
push ecx
mov ecx, edx
call fcn.002fd188
mov eax, dword [ebp - 0x28]
and eax, ebx
and eax, esi
mov ecx, eax
shl ecx, 8
or eax, ecx
mov edx, eax
shl edx, 0x10
or edx, eax
mov eax, ebx
mov ebx, dword [ebp - 0x20]
not eax
or eax, dword [ebp - 0x24]
and eax, esi
mov ecx, eax
shl ecx, 8
or eax, ecx
mov ecx, eax
shl ecx, 0x10
or ecx, eax
movzx eax, byte [edi + 0x434]
and ebx, eax
and ebx, esi
mov eax, ebx
shl eax, 8
or ebx, eax
mov eax, ebx
shl eax, 0x10
or eax, ebx
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 4]
mov esi, dword [esi + 0xc]
mov dword [ebp - 8], esi
movzx esi, word [edi + 0x454]
mov dword [ebp - 0x18], esi
mov esi, dword [ebp - 0x2c]
mov esi, dword [esi + 0x80]
mov edi, dword [esi + 0x4e8]
mov esi, dword [esi + 0x500]
add esi, edi
mov dword [ebp - 0x20], esi
mov esi, dword [ebp - 0x18]
imul esi, ebx
mov dword [ebp - 0xc], edi
mov edi, dword [ebp + 8]
add esi, dword [edi]
add dword [ebp - 0xc], esi
mov esi, edi
mov edi, dword [esi + 8]
sub edi, dword [esi]
mov dword [ebp - 0x14], edi
cmp edi, 0x20
jae 0x2fd763
and dword [ebp - 4], 0
and dword [ebp - 0x1c], 0
mov esi, edi
mov dword [ebp - 0x10], esi
jmp 0x2fd77e
mov esi, dword [ebp - 0xc]
neg esi
and esi, 0x1f
sub edi, esi
mov dword [ebp - 0x10], esi
mov esi, edi
and esi, 0x1f
shr edi, 5
mov dword [ebp - 4], esi
mov dword [ebp - 0x1c], edi
test ecx, ecx
jne 0x2fd7f4
cmp ebx, dword [ebp - 8]
mov edi, ebx
jge 0x2fdc8e
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov ecx, ebx
add ebx, dword [ebp - 0x18]
add edx, ecx
cmp edx, dword [ebp - 0x20]
ja 0x2fdc8e
cmp dword [ebp - 0x10], 0
jbe 0x2fd7b4
mov esi, dword [ebp - 0x10]
mov edx, ecx
inc ecx
dec esi
mov byte [edx], al
jne 0x2fd7ac
mov edx, dword [ebp - 0x1c]
test edx, edx
jbe 0x2fd7d8
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
mov dword [ecx + 0x10], eax
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x18], eax
mov dword [ecx + 0x1c], eax
add ecx, 0x20
dec edx
jne 0x2fd7bb
cmp dword [ebp - 4], 0
jbe 0x2fd7e9
mov esi, dword [ebp - 4]
mov edx, ecx
inc ecx
dec esi
mov byte [edx], al
jne 0x2fd7e1
inc edi
cmp edi, dword [ebp - 8]
jl 0x2fd790
jmp 0x2fdc8e
test edx, edx
jne 0x2fd9b2
test eax, eax
jne 0x2fd87b
cmp ecx, 0xffffffff
je 0x2fdc8e
cmp ebx, dword [ebp - 8]
mov edi, ebx
jge 0x2fdc8e
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov eax, ebx
add ebx, dword [ebp - 0x18]
add edx, eax
cmp edx, dword [ebp - 0x20]
ja 0x2fdc8e
cmp dword [ebp - 0x10], 0
jbe 0x2fd83b
mov esi, dword [ebp - 0x10]
mov edx, eax
and byte [edx], cl
inc eax
dec esi
jne 0x2fd833
mov edx, dword [ebp - 0x1c]
test edx, edx
jbe 0x2fd85f
and dword [eax], ecx
and dword [eax + 4], ecx
and dword [eax + 8], ecx
and dword [eax + 0xc], ecx
and dword [eax + 0x10], ecx
and dword [eax + 0x14], ecx
and dword [eax + 0x18], ecx
and dword [eax + 0x1c], ecx
add eax, 0x20
dec edx
jne 0x2fd842
cmp dword [ebp - 4], 0
jbe 0x2fd870
mov esi, dword [ebp - 4]
mov edx, eax
and byte [edx], cl
inc eax
dec esi
jne 0x2fd868
inc edi
cmp edi, dword [ebp - 8]
jl 0x2fd817
jmp 0x2fdc8e
cmp ecx, 0xffffffff
jne 0x2fd8f2
cmp ebx, dword [ebp - 8]
mov edi, ebx
jge 0x2fdc8e
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov ecx, ebx
add ebx, dword [ebp - 0x18]
add edx, ecx
cmp edx, dword [ebp - 0x20]
ja 0x2fdc8e
cmp dword [ebp - 0x10], 0
jbe 0x2fd8b2
mov esi, dword [ebp - 0x10]
mov edx, ecx
or byte [edx], al
inc ecx
dec esi
jne 0x2fd8aa
mov edx, dword [ebp - 0x1c]
test edx, edx
jbe 0x2fd8d6
or dword [ecx], eax
or dword [ecx + 4], eax
or dword [ecx + 8], eax
or dword [ecx + 0xc], eax
or dword [ecx + 0x10], eax
or dword [ecx + 0x14], eax
or dword [ecx + 0x18], eax
or dword [ecx + 0x1c], eax
add ecx, 0x20
dec edx
jne 0x2fd8b9
cmp dword [ebp - 4], 0
jbe 0x2fd8e7
mov esi, dword [ebp - 4]
mov edx, ecx
or byte [edx], al
inc ecx
dec esi
jne 0x2fd8df
inc edi
cmp edi, dword [ebp - 8]
jl 0x2fd88e
jmp 0x2fdc8e
cmp ebx, dword [ebp - 8]
mov dword [ebp - 0x24], ebx
jge 0x2fdc8e
mov edx, dword [ebp - 0xc]
mov esi, edx
add edx, dword [ebp - 0x18]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x14]
add edx, esi
cmp edx, dword [ebp - 0x20]
ja 0x2fdc8e
mov edx, dword [ebp - 0x10]
test edx, edx
jbe 0x2fd92c
mov edi, esi
mov bl, byte [edi]
and bl, cl
or bl, al
inc esi
dec edx
mov byte [edi], bl
jne 0x2fd91e
mov edx, dword [ebp - 0x1c]
test edx, edx
jbe 0x2fd987
mov edi, dword [esi]
and edi, ecx
or edi, eax
mov dword [esi], edi
mov edi, ecx
and edi, dword [esi + 4]
add esi, 0x20
or edi, eax
mov dword [esi - 0x1c], edi
mov edi, dword [esi - 0x18]
and edi, ecx
or edi, eax
mov dword [esi - 0x18], edi
mov edi, ecx
and edi, dword [esi - 0x14]
or edi, eax
mov dword [esi - 0x14], edi
mov edi, dword [esi - 0x10]
and edi, ecx
or edi, eax
mov dword [esi - 0x10], edi
mov edi, ecx
and edi, dword [esi - 0xc]
or edi, eax
mov dword [esi - 0xc], edi
mov edi, dword [esi - 8]
and edi, ecx
or edi, eax
mov dword [esi - 8], edi
mov edi, ecx
and edi, dword [esi - 4]
or edi, eax
dec edx
mov dword [esi - 4], edi
jne 0x2fd933
cmp dword [ebp - 4], 0
jbe 0x2fd99e
mov edx, dword [ebp - 4]
mov edi, esi
mov bl, byte [edi]
and bl, cl
or bl, al
inc esi
dec edx
mov byte [edi], bl
jne 0x2fd990
inc dword [ebp - 0x24]
mov edx, dword [ebp - 0x24]
cmp edx, dword [ebp - 8]
jl 0x2fd8fe
jmp 0x2fdc8e
test eax, eax
jne 0x2fdaf1
cmp ecx, 0xffffffff
jne 0x2fda31
cmp ebx, dword [ebp - 8]
mov edi, ebx
jge 0x2fdc8e
mov ebx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x14]
mov eax, ebx
add ebx, dword [ebp - 0x18]
add ecx, eax
cmp ecx, dword [ebp - 0x20]
ja 0x2fdc8e
cmp dword [ebp - 0x10], 0
jbe 0x2fd9f1
mov esi, dword [ebp - 0x10]
mov ecx, eax
xor byte [ecx], dl
inc eax
dec esi
jne 0x2fd9e9
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
jbe 0x2fda15
xor dword [eax], edx
xor dword [eax + 4], edx
xor dword [eax + 8], edx
xor dword [eax + 0xc], edx
xor dword [eax + 0x10], edx
xor dword [eax + 0x14], edx
xor dword [eax + 0x18], edx
xor dword [eax + 0x1c], edx
add eax, 0x20
dec ecx
jne 0x2fd9f8
cmp dword [ebp - 4], 0
jbe 0x2fda26
mov esi, dword [ebp - 4]
mov ecx, eax
xor byte [ecx], dl
inc eax
dec esi
jne 0x2fda1e
inc edi
cmp edi, dword [ebp - 8]
jl 0x2fd9cd
jmp 0x2fdc8e
cmp ebx, dword [ebp - 8]
mov dword [ebp - 0x24], ebx
jge 0x2fdc8e
mov esi, dword [ebp - 0xc]
mov eax, esi
add esi, dword [ebp - 0x18]
mov dword [ebp - 0xc], esi
mov esi, dword [ebp - 0x14]
add esi, eax
cmp esi, dword [ebp - 0x20]
ja 0x2fdc8e
mov edi, dword [ebp - 0x10]
test edi, edi
jbe 0x2fda6b
mov esi, eax
mov bl, byte [esi]
xor bl, dl
and bl, cl
inc eax
dec edi
mov byte [esi], bl
jne 0x2fda5d
mov esi, dword [ebp - 0x1c]
test esi, esi
jbe 0x2fdac6
mov edi, dword [eax]
xor edi, edx
and edi, ecx
mov dword [eax], edi
mov edi, dword [eax + 4]
xor edi, edx
and edi, ecx
mov dword [eax + 4], edi
mov edi, dword [eax + 8]
xor edi, edx
and edi, ecx
mov dword [eax + 8], edi
mov edi, dword [eax + 0xc]
xor edi, edx
and edi, ecx
mov dword [eax + 0xc], edi
mov edi, dword [eax + 0x10]
xor edi, edx
and edi, ecx
mov dword [eax + 0x10], edi
mov edi, dword [eax + 0x14]
xor edi, edx
and edi, ecx
mov dword [eax + 0x14], edi
mov edi, dword [eax + 0x18]
xor edi, edx
and edi, ecx
mov dword [eax + 0x18], edi
mov edi, dword [eax + 0x1c]
xor edi, edx
and edi, ecx
mov dword [eax + 0x1c], edi
add eax, 0x20
dec esi
jne 0x2fda72
cmp dword [ebp - 4], 0
jbe 0x2fdadd
mov edi, dword [ebp - 4]
mov esi, eax
mov bl, byte [esi]
xor bl, dl
and bl, cl
inc eax
dec edi
mov byte [esi], bl
jne 0x2fdacf
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 8]
jl 0x2fda3d
jmp 0x2fdc8e
mov dword [ebp - 0x24], ebx
cmp ecx, 0xffffffff
jne 0x2fdbba
cmp ebx, dword [ebp - 8]
jge 0x2fdc8e
mov ecx, dword [ebp - 0xc]
mov esi, ecx
add ecx, dword [ebp - 0x18]
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 0x14]
add ecx, esi
cmp ecx, dword [ebp - 0x20]
ja 0x2fdc8e
mov ecx, dword [ebp - 0x10]
test ecx, ecx
jbe 0x2fdb34
mov edi, esi
mov bl, byte [edi]
xor bl, dl
or bl, al
inc esi
dec ecx
mov byte [edi], bl
jne 0x2fdb26
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
jbe 0x2fdb8f
mov edi, dword [esi]
xor edi, edx
or edi, eax
mov dword [esi], edi
mov edi, dword [esi + 4]
xor edi, edx
or edi, eax
mov dword [esi + 4], edi
mov edi, dword [esi + 8]
xor edi, edx
or edi, eax
mov dword [esi + 8], edi
mov edi, dword [esi + 0xc]
xor edi, edx
or edi, eax
mov dword [esi + 0xc], edi
mov edi, dword [esi + 0x10]
xor edi, edx
or edi, eax
mov dword [esi + 0x10], edi
mov edi, dword [esi + 0x14]
xor edi, edx
or edi, eax
mov dword [esi + 0x14], edi
mov edi, dword [esi + 0x18]
xor edi, edx
or edi, eax
mov dword [esi + 0x18], edi
mov edi, dword [esi + 0x1c]
xor edi, edx
or edi, eax
mov dword [esi + 0x1c], edi
add esi, 0x20
dec ecx
jne 0x2fdb3b
cmp dword [ebp - 4], 0
jbe 0x2fdba6
mov ecx, dword [ebp - 4]
mov edi, esi
mov bl, byte [edi]
xor bl, dl
or bl, al
inc esi
dec ecx
mov byte [edi], bl
jne 0x2fdb98
inc dword [ebp - 0x24]
mov ecx, dword [ebp - 0x24]
cmp ecx, dword [ebp - 8]
jl 0x2fdb06
jmp 0x2fdc8e
cmp ebx, dword [ebp - 8]
jge 0x2fdc8e
mov edi, dword [ebp - 0xc]
mov esi, edi
add edi, dword [ebp - 0x18]
mov dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x14]
add edi, esi
cmp edi, dword [ebp - 0x20]
ja 0x2fdc8e
mov edi, dword [ebp - 0x10]
test edi, edi
jbe 0x2fdbf8
mov dword [ebp - 0x28], edi
mov edi, esi
mov bl, byte [edi]
xor bl, dl
and bl, cl
or bl, al
inc esi
dec dword [ebp - 0x28]
mov byte [edi], bl
jne 0x2fdbe6
mov edi, dword [ebp - 0x1c]
test edi, edi
jbe 0x2fdc63
mov ebx, dword [esi]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi], ebx
mov ebx, dword [esi + 4]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi + 4], ebx
mov ebx, dword [esi + 8]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi + 8], ebx
mov ebx, dword [esi + 0xc]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi + 0xc], ebx
mov ebx, dword [esi + 0x10]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi + 0x10], ebx
mov ebx, dword [esi + 0x14]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi + 0x14], ebx
mov ebx, dword [esi + 0x18]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi + 0x18], ebx
mov ebx, dword [esi + 0x1c]
xor ebx, edx
and ebx, ecx
or ebx, eax
mov dword [esi + 0x1c], ebx
add esi, 0x20
dec edi
jne 0x2fdbff
mov edi, dword [ebp - 4]
test edi, edi
jbe 0x2fdc7f
mov dword [ebp - 0x28], edi
mov edi, esi
mov bl, byte [edi]
xor bl, dl
and bl, cl
or bl, al
inc esi
dec dword [ebp - 0x28]
mov byte [edi], bl
jne 0x2fdc6d
inc dword [ebp - 0x24]
mov esi, dword [ebp - 0x24]
cmp esi, dword [ebp - 8]
jl 0x2fdbc3
mov eax, dword [ebp - 0x30]
push 1
push dword [eax + 0x3cc]
mov eax, dword [ebp - 0x2c]
push dword [ebp + 8]
mov ecx, dword [eax + 0x80]
call fcn.002fd3a6
pop edi
pop esi
pop ebx
leave
ret 4