Function at 0x4670c5
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [0x49d084]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
test ebx, ebx
push esi
push edi
je 0x4674c1
mov eax, dword [ebx + 0x2b]
lea edx, [ebx + 0x18]
mov ecx, ebx
sub ecx, edx
and eax, 0x7f
add ecx, 0x30
mov dword [ebp - 0x18], eax
shl dword [ebp - 0x18], 4
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x34], edx
mov ecx, ebx
mov dword [ebp - 0x30], 2
jmp 0x467110
mov ecx, dword [ebp - 0x20]
mov eax, ecx
push 4
pop edx
add ecx, edx
mov esi, ecx
add ecx, edx
mov edi, ecx
add ecx, edx
mov dword [ebp - 0x1c], ecx
add ecx, edx
movzx edx, byte [eax]
mov dword [ebp - 0x20], ecx
xor ecx, ecx
mov ch, byte [edi + 2]
mov cl, byte [esi + 1]
shl ecx, 8
or ecx, edx
mov edx, dword [ebp - 0x1c]
movzx edx, byte [edx + 3]
shl ecx, 8
or ecx, edx
mov dword [ebp - 0x38], ecx
xor ecx, ecx
mov ch, byte [esi + 2]
mov edx, dword [ebp - 0x1c]
movzx edx, byte [edx]
mov cl, byte [eax + 1]
shl ecx, 8
or ecx, edx
movzx edx, byte [edi + 3]
shl ecx, 8
or ecx, edx
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x3c], ecx
xor ecx, ecx
mov ch, byte [eax + 2]
mov cl, byte [edx + 1]
movzx edx, byte [edi]
shl ecx, 8
or ecx, edx
movzx edx, byte [esi + 3]
shl ecx, 8
or ecx, edx
xor edx, edx
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x1c]
mov dh, byte [ecx + 2]
movzx ecx, byte [esi]
mov dl, byte [edi + 1]
shl edx, 8
or edx, ecx
movzx ecx, byte [eax + 3]
shl edx, 8
or edx, ecx
mov ecx, dword [ebp - 0x18]
xor edx, dword [ecx + 0x40c990]
mov dword [eax], edx
mov eax, dword [ecx + 0x40c994]
xor eax, dword [ebp - 0x38]
mov dword [esi], eax
mov eax, dword [ecx + 0x40c998]
xor eax, dword [ebp - 0x3c]
mov dword [edi], eax
mov eax, dword [ecx + 0x40c99c]
xor eax, dword [ebp - 0x28]
dec dword [ebp - 0x30]
mov ecx, dword [ebp - 0x1c]
mov dword [ecx], eax
jne 0x46710d
mov edx, dword [ebx + 0xc]
mov ecx, dword [ebx + 0x10]
mov edi, dword [ebx + 8]
mov eax, dword [ebx + 4]
imul eax, edi
imul edi, edx
mov esi, edx
imul esi, ecx
or eax, esi
mov esi, dword [ebx + 4]
imul esi, ecx
or edi, esi
mov esi, dword [ebx + 4]
imul esi, edx
mov edx, dword [ebx + 8]
imul edx, ecx
or esi, edx
and eax, 0x7f
and edi, 0x7f
and esi, 0x7f
cmp edi, eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x40], esi
jne 0x467228
inc edi
and edi, 0x7f
cmp edi, eax
mov dword [ebp - 0x44], edi
je 0x46721d
xor ecx, ecx
cmp esi, edi
sete cl
xor edx, edx
cmp esi, eax
sete dl
or ecx, edx
je 0x467253
inc esi
and esi, 0x7f
xor ecx, ecx
cmp esi, edi
sete cl
xor edx, edx
cmp esi, eax
sete dl
or ecx, edx
jne 0x46723a
mov dword [ebp - 0x40], esi
mov eax, dword [ebx + 4]
shl esi, 4
add esi, 0x40c990
sub esp, 0x10
mov edi, esp
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 8]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x10], eax
mov eax, dword [ebx + 0xc]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 8], eax
movsd dword es:[edi], dword [esi]
call fcn.00466f37
sub esp, 0x10
mov edi, esp
lea esi, [ebp - 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], eax
call fcn.00466f37
mov esi, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x20]
shl esi, 4
add esi, 0x40c990
sub esp, 0x10
mov edi, esp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
shl eax, 8
or ecx, eax
movsd dword es:[edi], dword [esi]
shl ecx, 8
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], ecx
call fcn.00466f37
mov esi, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x20]
shl esi, 4
add esi, 0x40c990
sub esp, 0x10
mov edi, esp
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
or ecx, eax
movsd dword es:[edi], dword [esi]
shl ecx, 8
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x20], ecx
call fcn.00466f37
mov ecx, dword [ebp - 0x20]
or ecx, eax
cmp ecx, dword [ebx + 0x14]
jne 0x46749b
lea eax, [ebp - 0x40]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x20], 3
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
and dword [ebp - 0x18], 0
mov ecx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x34]
shl ebx, 4
mov esi, dword [ebx + 0x40c994]
and esi, 0xf
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x50], ebx
jbe 0x467336
sub ecx, esi
add ecx, edi
push esi
push ecx
lea eax, [ebp - 0x14]
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebp - 0x4c]
add esp, 0xc
mov eax, ecx
sub eax, esi
je 0x467364
lea eax, [ecx + edi - 1]
mov dword [ebp - 0x2c], eax
mov eax, ecx
sub eax, esi
lea edx, [eax + edi - 1]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x24]
mov dl, byte [edx]
dec dword [ebp - 0x24]
mov byte [eax], dl
dec eax
dec dword [ebp - 0x28]
jne 0x467354
test esi, esi
jbe 0x467382
lea edx, [ebp - 0x14]
sub edx, edi
lea eax, [esi + edi - 1]
mov dword [ebp - 0x2c], edx
jmp 0x467379
mov edx, dword [ebp - 0x2c]
mov dl, byte [edx + eax]
mov byte [eax], dl
dec eax
dec esi
jne 0x467376
cmp ecx, 0x10
jb 0x467464
shr ecx, 4
mov ebx, edi
mov dword [ebp - 0x2c], ecx
jmp 0x467398
mov ebx, dword [ebp - 0x24]
mov eax, ebx
push 4
pop edx
add dword [ebp - 0x18], edx
add dword [ebp - 0x18], edx
add dword [ebp - 0x18], edx
add dword [ebp - 0x18], edx
add ebx, edx
mov ecx, ebx
add ebx, edx
mov esi, ebx
add ebx, edx
mov dword [ebp - 0x24], ebx
add dword [ebp - 0x24], edx
xor edx, edx
mov dh, byte [esi + 2]
mov edi, ebx
movzx ebx, byte [eax]
sub dword [ebp - 0x1c], 0x10
mov dl, byte [ecx + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [edi + 3]
shl edx, 8
or edx, ebx
mov dword [ebp - 0x38], edx
xor edx, edx
mov dh, byte [ecx + 2]
movzx ebx, byte [edi]
mov dl, byte [eax + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [esi + 3]
shl edx, 8
or edx, ebx
movzx ebx, byte [esi]
mov dword [ebp - 0x3c], edx
xor edx, edx
mov dh, byte [eax + 2]
mov dl, byte [edi + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [ecx + 3]
shl edx, 8
or edx, ebx
movzx ebx, byte [ecx]
mov dword [ebp - 0x28], edx
xor edx, edx
mov dh, byte [edi + 2]
mov dl, byte [esi + 1]
shl edx, 8
or edx, ebx
movzx ebx, byte [eax + 3]
shl edx, 8
or edx, ebx
mov ebx, dword [ebp - 0x50]
xor edx, dword [ebx + 0x40c990]
mov dword [eax], edx
mov eax, dword [ebx + 0x40c994]
xor eax, dword [ebp - 0x38]
mov dword [ecx], eax
mov eax, dword [ebx + 0x40c998]
xor eax, dword [ebp - 0x3c]
mov dword [esi], eax
mov eax, dword [ebx + 0x40c99c]
xor eax, dword [ebp - 0x28]
dec dword [ebp - 0x2c]
mov dword [edi], eax
jne 0x467395
mov edi, dword [ebp - 0x34]
xor esi, esi
cmp dword [ebp - 0x1c], esi
jbe 0x46748c
mov eax, dword [ebp - 0x18]
add edi, eax
mov eax, dword [ebx + 0x40c990]
dec dword [ebp - 0x1c]
mov ecx, esi
shr eax, cl
add esi, 8
and esi, 0x1f
xor byte [edi], al
inc edi
cmp dword [ebp - 0x1c], 0
ja 0x467470
sub dword [ebp - 0x30], 4
dec dword [ebp - 0x20]
jne 0x4672fe
jmp 0x4674c1
xor eax, eax
mov dword [ebx + 4], eax
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x14], eax
sub ebx, dword [ebp - 0x34]
add ebx, 0x30
je 0x4674c1
push ebx
push eax
push dword [ebp - 0x34]
call sub.msvcrt.dll_memset
add esp, 0xc
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0041d1c7
leave
ret 4