Function at 0x100369d0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
xor ecx, ecx
push edi
mov edx, 0x10003b7a
mov edi, 0x10138bf2
movzx eax, byte [ecx + 0x10003b78]
movzx eax, byte [eax + esi]
mov byte [ecx + 0x10138bf0], al
movzx eax, byte [edx + ecx - 1]
movzx eax, byte [eax + esi]
mov byte [edi + ecx - 1], al
movzx eax, byte [edx + ecx]
movzx eax, byte [eax + esi]
mov byte [edi + ecx], al
movzx eax, byte [edx + ecx + 1]
movzx eax, byte [eax + esi]
mov byte [edi + ecx + 1], al
add ecx, 4
cmp ecx, 0x40
jb 0x100369e4
mov ebp, dword [esp + 0x18]
xor ebx, ebx
mov esi, 0x10003ea2
lea ecx, [ecx]
cmp ebp, 1
jne 0x10036a3e
mov edi, 0xf
sub edi, ebx
jmp 0x10036a40
mov edi, ebx
push 0x20
push 0x10138c10
push 0x10138c30
call fcn.101180b0
lea ecx, [edi + edi*2]
add esp, 0xc
xor eax, eax
mov edi, 0x10138c71
shl ecx, 4
lea edx, [ecx + 0x101388f1]
jmp 0x10036a70
movzx ecx, byte [eax + 0x10003c70]
movzx ecx, byte [ecx + 0x10138c10]
xor cl, byte [edx + eax - 1]
mov byte [eax + 0x10138c70], cl
movzx ecx, byte [eax + 0x10003c71]
movzx ecx, byte [ecx + 0x10138c10]
xor cl, byte [edx + eax]
mov byte [edi + eax], cl
movzx ecx, byte [eax + 0x10003c72]
movzx ecx, byte [ecx + 0x10138c10]
xor cl, byte [edx + eax + 1]
mov byte [eax + 0x10138c72], cl
movzx ecx, byte [eax + 0x10003c73]
movzx ecx, byte [ecx + 0x10138c10]
xor cl, byte [edx + eax + 2]
mov byte [eax + 0x10138c73], cl
movzx ecx, byte [eax + 0x10003c74]
movzx ecx, byte [ecx + 0x10138c10]
xor cl, byte [edx + eax + 3]
mov byte [eax + 0x10138c74], cl
movzx ecx, byte [eax + 0x10003c75]
movzx ecx, byte [ecx + 0x10138c10]
xor cl, byte [edx + eax + 4]
mov byte [eax + 0x10138c75], cl
add eax, 6
cmp eax, 0x30
jb 0x10036a70
movzx eax, byte [0x10138c75]
movzx ecx, byte [0x10138c70]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c71]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c72]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c73]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c74]
movzx ecx, byte [eax + ecx*2 + 0x10003ca0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c50], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c51], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10138c53], cl
movzx ecx, byte [0x10138c76]
mov byte [0x10138c52], al
movzx eax, byte [0x10138c7b]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c77]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c78]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c79]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c7a]
movzx ecx, byte [eax + ecx*2 + 0x10003ce0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c54], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c55], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10138c57], cl
movzx ecx, byte [0x10138c7c]
mov byte [0x10138c56], al
movzx eax, byte [0x10138c81]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c7d]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c7e]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c7f]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c80]
movzx ecx, byte [eax + ecx*2 + 0x10003d20]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c58], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c59], al
mov eax, ecx
shr eax, 1
and al, 1
and cl, 1
mov byte [0x10138c5a], al
movzx eax, byte [0x10138c87]
mov byte [0x10138c5b], cl
movzx ecx, byte [0x10138c82]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c83]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c84]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c85]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c86]
movzx ecx, byte [eax + ecx*2 + 0x10003d60]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c5c], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c5d], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10138c5f], cl
mov byte [0x10138c5e], al
movzx eax, byte [0x10138c8d]
movzx ecx, byte [0x10138c88]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c89]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c8a]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c8b]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c8c]
movzx ecx, byte [eax + ecx*2 + 0x10003da0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c60], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c61], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10138c63], cl
movzx ecx, byte [0x10138c8e]
mov byte [0x10138c62], al
movzx eax, byte [0x10138c93]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c8f]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c90]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c91]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c92]
movzx ecx, byte [eax + ecx*2 + 0x10003de0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c64], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c65], al
mov eax, ecx
shr eax, 1
and al, 1
and cl, 1
mov byte [0x10138c66], al
movzx eax, byte [0x10138c99]
mov byte [0x10138c67], cl
movzx ecx, byte [0x10138c94]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c95]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c96]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c97]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c98]
movzx ecx, byte [eax + ecx*2 + 0x10003e20]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c68], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c69], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10138c6b], cl
movzx ecx, byte [0x10138c9a]
mov byte [0x10138c6a], al
movzx eax, byte [0x10138c9f]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c9b]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c9c]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c9d]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10138c9e]
movzx ecx, byte [eax + ecx*2 + 0x10003e60]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10138c6c], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10138c6d], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10138c6f], cl
mov byte [0x10138c6e], al
xor ecx, ecx
lea ebx, [ebx]
movzx eax, byte [ecx + 0x10003ea0]
movzx eax, byte [eax + 0x10138c50]
xor al, byte [ecx + 0x10138bf0]
mov byte [ecx + 0x10138c10], al
movzx eax, byte [ecx + 0x10003ea1]
movzx eax, byte [eax + 0x10138c50]
xor al, byte [ecx + 0x10138bf1]
mov byte [ecx + 0x10138c11], al
movzx eax, byte [esi + ecx]
movzx eax, byte [eax + 0x10138c50]
xor al, byte [ecx + 0x10138bf2]
mov byte [ecx + 0x10138c12], al
movzx eax, byte [ecx + 0x10003ea3]
movzx eax, byte [eax + 0x10138c50]
xor al, byte [ecx + 0x10138bf3]
mov byte [ecx + 0x10138c13], al
add ecx, 4
cmp ecx, 0x20
jb 0x10036e60
push 0x20
push 0x10138c30
push 0x10138bf0
call fcn.101180b0
inc ebx
add esp, 0xc
cmp ebx, 0x10
jb 0x10036a30
mov esi, dword [esp + 0x14]
xor edx, edx
movzx ecx, byte [edx + 0x10138bf0]
mov al, byte [edx + 0x10138c10]
mov byte [edx + 0x10138bf0], al
mov byte [edx + 0x10138c10], cl
inc edx
cmp edx, 0x20
jb 0x10036ef1
mov edx, 0x10003bb8
mov edi, 0x10003bb9
mov ebx, 0x10003bba
mov ebp, 0x10003bbb
sub edx, esi
sub edi, esi
sub ebx, esi
mov ecx, 0x10
sub ebp, esi
movzx eax, byte [edx + esi]
lea esi, [esi + 4]
movzx eax, byte [eax + 0x10138bf0]
mov byte [esi - 4], al
movzx eax, byte [edi + esi - 4]
movzx eax, byte [eax + 0x10138bf0]
mov byte [esi - 3], al
movzx eax, byte [ebx + esi - 4]
movzx eax, byte [eax + 0x10138bf0]
mov byte [esi - 2], al
movzx eax, byte [esi + ebp - 4]
movzx eax, byte [eax + 0x10138bf0]
mov byte [esi - 1], al
dec ecx
jne 0x10036f31
pop edi
pop esi
pop ebp
pop ebx
ret 8