Function at 0x10036820
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x10]
xor ecx, ecx
push edi
mov edx, 0x10003b3a
mov edi, 0x10137bb2
movzx eax, byte [ecx + 0x10003b38]
movzx eax, byte [eax + esi]
mov byte [ecx + 0x10137bb0], 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 0x10036834
mov ebp, dword [esp + 0x18]
xor ebx, ebx
mov esi, 0x10003e62
lea ecx, [ecx]
cmp ebp, 1
jne 0x1003688e
mov edi, 0xf
sub edi, ebx
jmp 0x10036890
mov edi, ebx
push 0x20
push 0x10137bd0
push 0x10137bf0
call fcn.10117410
lea ecx, [edi + edi*2]
add esp, 0xc
xor eax, eax
mov edi, 0x10137c31
shl ecx, 4
lea edx, [ecx + 0x101378b1]
jmp 0x100368c0
movzx ecx, byte [eax + 0x10003c30]
movzx ecx, byte [ecx + 0x10137bd0]
xor cl, byte [edx + eax - 1]
mov byte [eax + 0x10137c30], cl
movzx ecx, byte [eax + 0x10003c31]
movzx ecx, byte [ecx + 0x10137bd0]
xor cl, byte [edx + eax]
mov byte [edi + eax], cl
movzx ecx, byte [eax + 0x10003c32]
movzx ecx, byte [ecx + 0x10137bd0]
xor cl, byte [edx + eax + 1]
mov byte [eax + 0x10137c32], cl
movzx ecx, byte [eax + 0x10003c33]
movzx ecx, byte [ecx + 0x10137bd0]
xor cl, byte [edx + eax + 2]
mov byte [eax + 0x10137c33], cl
movzx ecx, byte [eax + 0x10003c34]
movzx ecx, byte [ecx + 0x10137bd0]
xor cl, byte [edx + eax + 3]
mov byte [eax + 0x10137c34], cl
movzx ecx, byte [eax + 0x10003c35]
movzx ecx, byte [ecx + 0x10137bd0]
xor cl, byte [edx + eax + 4]
mov byte [eax + 0x10137c35], cl
add eax, 6
cmp eax, 0x30
jb 0x100368c0
movzx eax, byte [0x10137c35]
movzx ecx, byte [0x10137c30]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c31]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c32]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c33]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c34]
movzx ecx, byte [eax + ecx*2 + 0x10003c60]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c10], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c11], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10137c13], cl
movzx ecx, byte [0x10137c36]
mov byte [0x10137c12], al
movzx eax, byte [0x10137c3b]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c37]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c38]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c39]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c3a]
movzx ecx, byte [eax + ecx*2 + 0x10003ca0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c14], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c15], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10137c17], cl
movzx ecx, byte [0x10137c3c]
mov byte [0x10137c16], al
movzx eax, byte [0x10137c41]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c3d]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c3e]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c3f]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c40]
movzx ecx, byte [eax + ecx*2 + 0x10003ce0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c18], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c19], al
mov eax, ecx
shr eax, 1
and al, 1
and cl, 1
mov byte [0x10137c1a], al
movzx eax, byte [0x10137c47]
mov byte [0x10137c1b], cl
movzx ecx, byte [0x10137c42]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c43]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c44]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c45]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c46]
movzx ecx, byte [eax + ecx*2 + 0x10003d20]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c1c], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c1d], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10137c1f], cl
mov byte [0x10137c1e], al
movzx eax, byte [0x10137c4d]
movzx ecx, byte [0x10137c48]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c49]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c4a]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c4b]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c4c]
movzx ecx, byte [eax + ecx*2 + 0x10003d60]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c20], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c21], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10137c23], cl
movzx ecx, byte [0x10137c4e]
mov byte [0x10137c22], al
movzx eax, byte [0x10137c53]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c4f]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c50]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c51]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c52]
movzx ecx, byte [eax + ecx*2 + 0x10003da0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c24], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c25], al
mov eax, ecx
shr eax, 1
and al, 1
and cl, 1
mov byte [0x10137c26], al
movzx eax, byte [0x10137c59]
mov byte [0x10137c27], cl
movzx ecx, byte [0x10137c54]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c55]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c56]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c57]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c58]
movzx ecx, byte [eax + ecx*2 + 0x10003de0]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c28], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c29], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10137c2b], cl
movzx ecx, byte [0x10137c5a]
mov byte [0x10137c2a], al
movzx eax, byte [0x10137c5f]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c5b]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c5c]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c5d]
lea ecx, [eax + ecx*2]
movzx eax, byte [0x10137c5e]
movzx ecx, byte [eax + ecx*2 + 0x10003e20]
mov eax, ecx
shr eax, 3
and al, 1
mov byte [0x10137c2c], al
mov eax, ecx
shr eax, 2
and al, 1
mov byte [0x10137c2d], al
mov eax, ecx
shr eax, 1
and cl, 1
and al, 1
mov byte [0x10137c2f], cl
mov byte [0x10137c2e], al
xor ecx, ecx
lea ebx, [ebx]
movzx eax, byte [ecx + 0x10003e60]
movzx eax, byte [eax + 0x10137c10]
xor al, byte [ecx + 0x10137bb0]
mov byte [ecx + 0x10137bd0], al
movzx eax, byte [ecx + 0x10003e61]
movzx eax, byte [eax + 0x10137c10]
xor al, byte [ecx + 0x10137bb1]
mov byte [ecx + 0x10137bd1], al
movzx eax, byte [esi + ecx]
movzx eax, byte [eax + 0x10137c10]
xor al, byte [ecx + 0x10137bb2]
mov byte [ecx + 0x10137bd2], al
movzx eax, byte [ecx + 0x10003e63]
movzx eax, byte [eax + 0x10137c10]
xor al, byte [ecx + 0x10137bb3]
mov byte [ecx + 0x10137bd3], al
add ecx, 4
cmp ecx, 0x20
jb 0x10036cb0
push 0x20
push 0x10137bf0
push 0x10137bb0
call fcn.10117410
inc ebx
add esp, 0xc
cmp ebx, 0x10
jb 0x10036880
mov esi, dword [esp + 0x14]
xor edx, edx
movzx ecx, byte [edx + 0x10137bb0]
mov al, byte [edx + 0x10137bd0]
mov byte [edx + 0x10137bb0], al
mov byte [edx + 0x10137bd0], cl
inc edx
cmp edx, 0x20
jb 0x10036d41
mov edx, 0x10003b78
mov edi, 0x10003b79
mov ebx, 0x10003b7a
mov ebp, 0x10003b7b
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 + 0x10137bb0]
mov byte [esi - 4], al
movzx eax, byte [edi + esi - 4]
movzx eax, byte [eax + 0x10137bb0]
mov byte [esi - 3], al
movzx eax, byte [ebx + esi - 4]
movzx eax, byte [eax + 0x10137bb0]
mov byte [esi - 2], al
movzx eax, byte [esi + ebp - 4]
movzx eax, byte [eax + 0x10137bb0]
mov byte [esi - 1], al
dec ecx
jne 0x10036d81
pop edi
pop esi
pop ebp
pop ebx
ret 8