Function at 0x4d7e20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov eax, esi
cdq
and edx, 3
push edi
lea ebx, [edx + eax]
sar ebx, 2
test ebx, ebx
jle 0x4d7e54
mov edi, dword [ebp + 8]
mov edx, ebx
mov ecx, dword [ebp + 0x10]
sub edi, ecx
mov eax, dword [edi + ecx]
lea ecx, [ecx + 4]
mov dword [ecx - 4], eax
sub edx, 1
jne 0x4d7e46
cmp esi, 0x20
jge 0x4d7e77
and esi, 0x80000003
jns 0x4d7e66
dec esi
or esi, 0xfffffffc
inc esi
mov edx, dword [ebp + 0x10]
shl esi, 3
mov eax, dword [edx + ebx*4]
bts eax, esi
mov dword [edx + ebx*4], eax
jmp 0x4d7e7a
mov edx, dword [ebp + 0x10]
mov edi, dword [edx + 0x1c]
lea eax, [edx + 0xc]
xor esi, esi
mov ecx, dword [eax - 0xc]
lea eax, [eax + 4]
xor ecx, dword [eax + 4]
xor edi, ecx
xor edi, esi
inc esi
xor edi, dword [eax - 4]
xor edi, 0x9e3779b9
rol edi, 0xb
mov dword [eax + 0x10], edi
cmp esi, 0x84
jl 0x4d7e82
sub edx, 0x30
mov dword [ebp - 4], 4
mov dword [ebp + 0x10], edx
mov ebx, dword [edx + 0x50]
mov esi, ebx
mov edi, dword [edx + 0x58]
mov eax, dword [edx + 0x54]
mov edx, dword [edx + 0x5c]
or ebx, edx
xor edx, eax
and eax, esi
xor esi, edi
xor edi, edx
or esi, eax
mov dword [ebp + 0xc], edi
and edx, ebx
xor ebx, eax
xor edx, esi
and esi, ebx
xor esi, dword [ebp + 0xc]
mov ecx, edx
xor ecx, eax
mov eax, edx
or ecx, ebx
xor ecx, edi
mov edi, dword [ebp + 0x10]
or eax, ecx
xor eax, edx
xor eax, ebx
mov dword [edi + 0x50], eax
mov eax, edi
mov ebx, dword [eax + 0x68]
mov dword [eax + 0x5c], esi
mov esi, dword [eax + 0x60]
mov edi, esi
mov dword [eax + 0x58], edx
and edi, ebx
mov edx, dword [eax + 0x64]
mov dword [eax + 0x54], ecx
mov ecx, dword [eax + 0x6c]
xor edi, ecx
mov eax, edi
mov dword [ebp + 0xc], esi
xor eax, edx
or esi, ecx
xor esi, edx
xor ebx, eax
mov edx, dword [ebp + 0xc]
xor edx, ebx
mov ecx, edx
or ecx, esi
xor ecx, edi
and edi, esi
xor edx, edi
mov edi, dword [ebp + 0x10]
mov eax, edx
not edx
xor eax, esi
xor eax, ecx
mov esi, dword [edi + 0x7c]
mov dword [edi + 0x6c], edx
mov dword [edi + 0x60], ebx
mov ebx, dword [edi + 0x74]
mov dword [edi + 0x68], eax
mov eax, dword [ebp + 0x10]
mov dword [edi + 0x64], ecx
mov edi, dword [edi + 0x70]
not edi
mov edx, dword [eax + 0x78]
mov ecx, edi
and edi, ebx
not edx
xor edx, edi
or edi, esi
xor ebx, edi
xor esi, edx
xor edi, ecx
or ecx, ebx
or edx, edi
xor ebx, esi
and edx, ecx
xor edi, ebx
mov dword [eax + 0x70], edx
mov eax, edx
and eax, edi
and edx, ebx
xor eax, ecx
xor edx, edi
mov ecx, dword [ebp + 0x10]
mov ebx, ecx
mov dword [ecx + 0x74], eax
lea eax, [ebx + 0x80]
mov dword [ecx + 0x78], esi
mov ecx, dword [eax]
mov dword [ebx + 0x7c], edx
mov edx, dword [ebx + 0x88]
mov edi, edx
mov dword [ebp - 8], eax
mov eax, dword [ebx + 0x84]
xor edi, eax
mov ebx, dword [ebx + 0x8c]
xor ebx, ecx
mov dword [ebp + 0xc], edx
mov esi, ebx
mov edx, ebx
or esi, ecx
and edx, eax
mov eax, dword [ebp + 0xc]
xor esi, edi
xor edi, ebx
xor edx, ecx
xor ebx, eax
or eax, edx
xor eax, edi
mov ecx, ebx
or ebx, esi
mov dword [ebp + 0xc], eax
not edi
xor ecx, edx
or edi, edx
mov eax, ebx
mov edx, dword [ebp + 0xc]
xor ecx, edi
xor ebx, edi
xor eax, ecx
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
mov dword [edi + 0x8c], esi
mov dword [edi + 0x88], edx
mov dword [edi + 0x84], ebx
mov edi, ecx
mov dword [ecx], eax
mov dword [ebp + 0x10], edi
mov ebx, dword [edi + 0x14]
mov esi, ebx
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x18]
and esi, ecx
mov edi, dword [edi + 0x1c]
xor esi, edi
xor ecx, esi
and edi, ebx
xor esi, ebx
mov edx, ecx
xor ebx, eax
or edx, eax
xor edx, esi
xor edi, ebx
xor esi, edi
and edi, edx
mov eax, esi
xor edi, ecx
xor eax, ecx
and esi, edx
mov ecx, dword [ebp + 0x10]
not eax
xor esi, eax
and eax, edx
xor eax, ebx
xor eax, edi
mov dword [ecx + 0x10], esi
mov esi, dword [ecx + 0x20]
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x18], edi
mov dword [ecx + 0x1c], edx
mov ebx, dword [ecx + 0x2c]
mov edi, ebx
mov eax, dword [ecx + 0x28]
and ebx, esi
mov ecx, dword [ecx + 0x24]
xor esi, edi
not eax
mov edx, edi
xor ebx, eax
or edx, eax
xor edx, esi
xor ecx, ebx
or esi, ecx
xor edx, ecx
xor edi, esi
mov eax, ebx
or eax, esi
xor edi, ebx
mov esi, dword [ebp + 0x10]
xor eax, edx
xor edi, eax
not ebx
mov dword [esi + 0x28], edi
and edi, edx
xor edi, ebx
mov dword [esi + 0x20], eax
mov ebx, esi
mov dword [esi + 0x24], ecx
mov esi, dword [ebx + 0x34]
mov edx, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x38]
xor edx, esi
mov dword [ebx + 0x2c], edi
mov eax, edx
mov edi, dword [ebx + 0x3c]
xor esi, edi
and eax, esi
not edi
xor ecx, edi
xor eax, ecx
or ecx, esi
xor esi, edi
mov dword [ebx + 0x30], eax
and edi, eax
xor esi, ecx
xor esi, eax
xor edi, edx
mov eax, edi
mov dword [ebx + 0x34], edi
and eax, edx
xor ecx, edx
xor eax, esi
or edi, esi
mov dword [ebx + 0x38], eax
not ecx
mov eax, dword [ebp + 0x10]
xor edi, ecx
mov dword [ebx + 0x3c], edi
mov edi, dword [ebx + 0x40]
mov ebx, dword [ebx + 0x4c]
mov edx, dword [eax + 0x44]
mov esi, dword [eax + 0x48]
xor edx, ebx
not ebx
xor esi, ebx
xor ebx, edi
mov eax, ebx
and eax, edx
xor edx, ebx
xor eax, esi
xor edi, edx
mov ecx, eax
and esi, edx
or ecx, edx
xor esi, edi
mov edx, dword [ebp + 0x10]
and edi, eax
xor ebx, edi
xor ecx, edi
mov dword [edx + 0x40], eax
mov eax, ebx
and eax, esi
mov dword [edx + 0x4c], ebx
xor eax, ecx
mov dword [edx + 0x44], eax
mov eax, ebx
or eax, edi
xor eax, esi
sub dword [ebp - 4], 1
not eax
mov dword [edx + 0x48], eax
jne 0x4d7eb4
mov ebx, dword [edx + 0x50]
mov esi, ebx
mov edi, dword [edx + 0x58]
mov eax, dword [edx + 0x54]
mov edx, dword [edx + 0x5c]
or ebx, edx
xor edx, eax
and eax, esi
xor esi, edi
xor edi, edx
or esi, eax
and edx, ebx
xor edx, esi
mov dword [ebp + 0xc], esi
mov esi, dword [ebp + 0x10]
xor ebx, eax
mov ecx, edx
xor ecx, eax
mov eax, edx
or ecx, ebx
xor ecx, edi
or eax, ecx
xor eax, edx
xor eax, ebx
mov dword [esi + 0x50], eax
mov eax, esi
mov esi, dword [ebp + 0xc]
and esi, ebx
xor esi, edi
pop edi
mov dword [eax + 0x5c], esi
pop esi
mov dword [eax + 0x54], ecx
mov dword [eax + 0x58], edx
pop ebx
mov esp, ebp
pop ebp
ret