Function at 0x100aef80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x61c
mov eax, dword [0x101e6040]
xor eax, esp
mov dword [esp + 0x618], eax
mov eax, dword [ebp + 0x14]
push ebx
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x24]
mov dword [esp + 0x10], eax
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 0x10]
test ebx, ebx
je 0x100af20f
cmp byte [edi + 0xc], 0
je 0x100af20f
mov dword [esi + 0x308], ebx
cmp byte [edi + 0xc], 0
je 0x100af021
mov edx, dword [edi]
mov eax, 0x200
mov ecx, dword [edi + 4]
sub ecx, edx
sar ecx, 1
cmp ecx, eax
cmovb eax, ecx
add eax, eax
push eax
push edx
lea eax, [esp + 0x228]
push eax
call fcn.101528b0
add esp, 8
lea ecx, [esp + 0x224]
mov edx, 0x400
push 0
call fcn.100ad1a0
add esp, 8
xor eax, eax
mov word [esp + 0x61e], ax
jmp 0x100af02b
xor eax, eax
mov word [esp + 0x220], ax
xor eax, eax
push eax
push eax
push 0x200
mov word [esp + 0x32a], ax
mov byte [esp + 0x2c], al
lea eax, [esp + 0x2c]
push eax
push 0xffffffffffffffff
lea eax, [esp + 0x234]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
dec ebx
mov byte [esp + 0x21f], 0
mov byte [esp + 0x9f], 0
mov byte [esp + 0x13], 1
cmp ebx, 4
ja case.default.0x100af074
jmp dword [ebx*4 + 0x100af228]
mov al, byte [esp + 0x20]
mov word [esi + 0x925], 0
mov byte [esi + 0x924], 0
test al, al
je case.default.0x100af074
xor dl, dl
lea edi, [esp + 0x20]
xor bl, bl
xor cl, cl
nop dword [eax]
add dl, al
lea edi, [edi + 1]
xor bl, al
add al, cl
mov cl, al
add al, al
shr cl, 7
or cl, al
mov al, byte [edi]
test al, al
jne 0x100af0a0
mov byte [esi + 0x926], cl
mov byte [esi + 0x925], bl
mov byte [esi + 0x924], dl
mov bl, byte [esp + 0x13]
mov edx, 0x200
lea ecx, [esp + 0x20]
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub edx, 1
jne 0x100af0d7
mov ecx, 0x400
lea eax, [esp + 0x220]
nop
mov byte [eax], 0
lea eax, [eax + 1]
sub ecx, 1
jne 0x100af0f0
mov al, bl
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x618]
xor ecx, esp
call fcn.10151433
mov esp, ebp
pop ebp
ret 0x20
lea ecx, [esi + 0x414]
call fcn.1010ce60
lea ecx, [esp + 0x20]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100af126
sub ecx, edx
lea edx, [esp + 0x20]
push 0x101eb0a8
push ecx
or ecx, 0xffffffff
call fcn.10108970
mov cl, byte [esp + 0x20]
mov word [esi + 0x928], ax
shr eax, 0x10
mov word [esi + 0x92a], ax
xor eax, eax
mov dword [esi + 0x92c], eax
test cl, cl
je case.default.0x100af074
xor ebx, ebx
mov dword [esp + 0x14], eax
lea edi, [esp + 0x20]
movzx eax, cl
lea edi, [edi + 1]
movzx ecx, cl
mov dx, word [esi + eax*4 + 0x414]
xor dx, cx
xor dx, bx
mov word [esi + 0x92c], dx
mov ax, word [esi + eax*4 + 0x416]
add ax, cx
movzx ebx, dx
add ax, word [esp + 0x14]
mov cl, byte [edi]
mov word [esi + 0x92e], ax
movzx eax, ax
mov dword [esp + 0x14], eax
test cl, cl
jne 0x100af170
jmp case.default.0x100af074
lea eax, [esp + 0x20]
mov ecx, esi
push eax
call fcn.100ad540
jmp case.default.0x100af074
push dword [esp + 0x14]
lea eax, [esp + 0x224]
push eax
push edi
push ecx
mov ecx, esi
call fcn.100ad8e0
jmp case.default.0x100af074
push dword [esp + 0x18]
lea eax, [esp + 0x224]
push dword [esp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
push dword [esp + 0x24]
push eax
push edi
push ecx
mov ecx, esi
call fcn.100ae3e0
mov bl, al
jmp 0x100af0ce
mov ecx, dword [esp + 0x624]
xor al, al
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.10151433
mov esp, ebp
pop ebp
ret 0x20