Function at 0x4af2f9
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
mov ebx, dword [ebp + 8]
mov cl, 0x38
push esi
push edi
mov eax, dword [ebx]
mov edx, dword [ebx + 4]
call fcn.005465f0
mov ecx, dword [ebx + 0x20]
mov esi, eax
mov eax, dword [ebx + 8]
mov edi, edx
mov dword [ebp - 4], eax
mov eax, dword [ebx + 0xc]
mov dword [ebp - 8], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0xc], eax
mov eax, dword [ebx + 0x14]
mov dword [ebp - 0x10], eax
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebx + 0x2c]
mov dword [ebp - 0x28], edx
mov edx, dword [ebx + 0x24]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x14], edx
cmp dword [ebp + 0x10], eax
je 0x4af357
xor eax, eax
jmp 0x4af721
mov eax, dword [ebx + 0x28]
sub eax, 1
je 0x4af3c8
sub eax, 1
je 0x4af3b8
sub eax, 1
je 0x4af3a8
sub eax, 1
je 0x4af398
sub eax, 1
je 0x4af391
sub eax, 1
je 0x4af387
sub eax, 1
jne 0x4af3da
movzx eax, byte [ebx + 0x3e]
cdq
shl eax, 0x10
or edi, eax
movzx eax, byte [ebx + 0x3d]
cdq
shl eax, 8
or edi, eax
movzx eax, byte [ebx + 0x3c]
cdq
or edi, eax
movzx eax, byte [ebx + 0x3b]
cdq
shld edx, eax, 0x18
shl eax, 0x18
or esi, eax
or edi, edx
movzx eax, byte [ebx + 0x3a]
cdq
shld edx, eax, 0x10
shl eax, 0x10
or esi, eax
or edi, edx
movzx eax, byte [ebx + 0x39]
cdq
shld edx, eax, 8
shl eax, 8
or esi, eax
or edi, edx
movzx eax, byte [ebx + 0x38]
cdq
or esi, eax
or edi, edx
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x28], edi
mov eax, dword [ebx + 0x30]
xor ecx, esi
xor edx, edi
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x14], edx
mov dword [ebp + 0x10], eax
test eax, eax
jle 0x4af4af
mov ebx, ecx
mov ecx, dword [ebp - 0xc]
add dword [ebp - 4], ecx
mov eax, dword [ebp - 0x10]
mov edi, eax
adc dword [ebp - 8], eax
xor esi, esi
shld eax, ecx, 0xd
shr edi, 0x13
shl ecx, 0xd
or esi, eax
xor esi, dword [ebp - 8]
or edi, ecx
xor edi, dword [ebp - 4]
add dword [ebp - 0x18], ebx
mov eax, dword [ebp - 0x14]
adc dword [ebp - 0x1c], edx
xor ecx, ecx
shld eax, ebx, 0x10
shr edx, 0x10
shl ebx, 0x10
or ecx, eax
xor ecx, dword [ebp - 0x1c]
or edx, ebx
xor edx, dword [ebp - 0x18]
xor ebx, ebx
or ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
add eax, edx
mov dword [ebp - 4], eax
adc ebx, ecx
xor eax, eax
mov dword [ebp - 8], ebx
mov ebx, ecx
shld ecx, edx, 0x15
shr ebx, 0xb
shl edx, 0x15
or ebx, edx
xor edx, edx
xor ebx, dword [ebp - 4]
or edx, ecx
xor edx, dword [ebp - 8]
mov ecx, esi
add dword [ebp - 0x18], edi
mov dword [ebp - 0x14], edx
adc dword [ebp - 0x1c], esi
shld esi, edi, 0x11
shr ecx, 0xf
shl edi, 0x11
or eax, esi
mov esi, dword [ebp - 0x1c]
or ecx, edi
mov edi, dword [ebp - 0x18]
xor eax, esi
mov dword [ebp - 0x18], esi
xor ecx, edi
xor esi, esi
mov dword [ebp - 0x10], eax
or esi, edi
sub dword [ebp + 0x10], 1
mov dword [ebp - 0x1c], esi
jne 0x4af3f7
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0x28]
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 0x20]
xor dword [ebp - 8], edi
mov eax, 0xee
xor dword [ebp - 4], esi
xor edi, edi
cmp dword [ebx + 0x2c], 0x10
je 0x4af4c5
add eax, 0x11
xor eax, dword [ebp - 0x18]
xor edi, dword [ebp - 0x1c]
mov esi, dword [ebx + 0x34]
mov dword [ebp - 0x18], eax
mov dword [ebp + 0x10], edi
mov dword [ebp - 0x28], esi
test esi, esi
jle 0x4af5ab
mov ebx, dword [ebp - 0x20]
mov dword [ebp + 0x10], edi
mov ecx, dword [ebp - 0xc]
add dword [ebp - 4], ecx
mov esi, dword [ebp - 0x10]
mov edi, esi
adc dword [ebp - 8], esi
xor esi, esi
shld dword [ebp - 0x10], ecx, 0xd
or esi, dword [ebp - 0x10]
xor esi, dword [ebp - 8]
shr edi, 0x13
shl ecx, 0xd
or edi, ecx
mov dword [ebp - 0xc], esi
xor edi, dword [ebp - 4]
add eax, ebx
mov dword [ebp - 0x18], eax
adc dword [ebp + 0x10], edx
xor ecx, ecx
mov eax, dword [ebp - 0x14]
shld eax, ebx, 0x10
shr edx, 0x10
shl ebx, 0x10
or ecx, eax
xor ecx, dword [ebp + 0x10]
or edx, ebx
xor edx, dword [ebp - 0x18]
xor ebx, ebx
or ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
add eax, edx
mov dword [ebp - 4], eax
adc ebx, ecx
xor eax, eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 8], ebx
mov ebx, ecx
shld ecx, edx, 0x15
shr ebx, 0xb
shl edx, 0x15
or ebx, edx
xor edx, edx
xor ebx, dword [ebp - 4]
or edx, ecx
xor edx, dword [ebp - 8]
mov ecx, dword [ebp - 0x18]
add ecx, edi
mov dword [ebp - 0x14], edx
adc eax, esi
shr dword [ebp - 0xc], 0xf
and dword [ebp - 0x10], 0
shld esi, edi, 0x11
mov dword [ebp - 0x18], eax
shl edi, 0x11
or dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x10]
or edi, esi
mov esi, dword [ebp - 0xc]
xor edi, eax
xor esi, ecx
mov dword [ebp - 0x10], edi
xor edi, edi
or edi, ecx
mov dword [ebp - 0xc], esi
sub dword [ebp - 0x28], 1
mov dword [ebp + 0x10], edi
jne 0x4af4e5
mov dword [ebp - 0x20], ebx
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 0x20]
jmp 0x4af5ae
mov esi, dword [ebp - 0xc]
xor ecx, eax
and dword [ebp - 0x28], 0
xor ecx, esi
xor edx, edi
mov esi, dword [ebp + 0xc]
xor ecx, dword [ebp - 4]
xor edx, dword [ebp - 0x10]
mov eax, ecx
xor edx, dword [ebp - 8]
shr eax, 8
mov byte [esi + 1], al
mov eax, ecx
shr eax, 0x10
mov byte [esi + 2], al
mov eax, edx
shr eax, 8
mov byte [esi + 5], al
mov eax, edx
mov byte [esi], cl
mov byte [esi + 4], dl
shr ecx, 0x18
shr eax, 0x10
shr edx, 0x18
mov byte [esi + 3], cl
mov byte [esi + 6], al
mov byte [esi + 7], dl
cmp dword [ebx + 0x2c], 8
je 0x4af71e
mov eax, dword [ebx + 0x34]
mov ecx, dword [ebp - 0xc]
xor dword [ebp - 0x10], 0
xor ecx, 0xdd
mov ebx, dword [ebp - 0x20]
test eax, eax
mov edx, dword [ebp - 0x14]
mov dword [ebp + 8], eax
mov eax, dword [ebp - 0x18]
jle 0x4af6d9
add dword [ebp - 4], ecx
mov esi, dword [ebp - 0x10]
mov edi, esi
adc dword [ebp - 8], esi
xor esi, esi
shld dword [ebp - 0x10], ecx, 0xd
or esi, dword [ebp - 0x10]
xor esi, dword [ebp - 8]
shr edi, 0x13
shl ecx, 0xd
or edi, ecx
mov dword [ebp - 0xc], esi
xor edi, dword [ebp - 4]
add eax, ebx
mov dword [ebp - 0x18], eax
adc dword [ebp + 0x10], edx
xor ecx, ecx
mov eax, dword [ebp - 0x14]
shld eax, ebx, 0x10
shr edx, 0x10
shl ebx, 0x10
or ecx, eax
xor ecx, dword [ebp + 0x10]
or edx, ebx
xor edx, dword [ebp - 0x18]
xor ebx, ebx
or ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
add eax, edx
mov dword [ebp - 4], eax
adc ebx, ecx
xor eax, eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 8], ebx
mov ebx, ecx
shld ecx, edx, 0x15
shr ebx, 0xb
shl edx, 0x15
or ebx, edx
xor edx, edx
xor ebx, dword [ebp - 4]
or edx, ecx
xor edx, dword [ebp - 8]
mov ecx, dword [ebp - 0x18]
add ecx, edi
mov dword [ebp - 0x14], edx
adc eax, esi
shr dword [ebp - 0xc], 0xf
and dword [ebp - 0x10], 0
shld esi, edi, 0x11
shl edi, 0x11
or dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x10]
xor dword [ebp - 0xc], ecx
or edi, esi
xor edi, eax
mov dword [ebp - 0x10], edi
xor edi, edi
or edi, ecx
sub dword [ebp + 8], 1
mov ecx, dword [ebp - 0xc]
mov dword [ebp + 0x10], edi
jne 0x4af623
mov esi, dword [ebp + 0xc]
xor ebx, eax
and dword [ebp - 0x28], 0
xor ebx, ecx
xor edx, edi
xor ebx, dword [ebp - 4]
xor edx, dword [ebp - 0x10]
mov eax, ebx
xor edx, dword [ebp - 8]
shr eax, 8
mov byte [esi + 9], al
mov eax, ebx
shr eax, 0x10
mov byte [esi + 0xa], al
mov eax, edx
shr eax, 8
mov byte [esi + 0xd], al
mov eax, edx
mov byte [esi + 8], bl
shr ebx, 0x18
shr eax, 0x10
mov byte [esi + 0xc], dl
shr edx, 0x18
mov byte [esi + 0xb], bl
mov byte [esi + 0xe], al
mov byte [esi + 0xf], dl
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
leave
ret