Function at 0x10036860
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 0x10036874
mov ebp, dword [esp + 0x18]
xor ebx, ebx
mov esi, 0x10003e62
lea ecx, [ecx]
cmp ebp, 1
jne 0x100368ce
mov edi, 0xf
sub edi, ebx
jmp 0x100368d0
mov edi, ebx
push 0x20
push 0x10137bd0
push 0x10137bf0
call fcn.101175c0
lea ecx, [edi + edi*2]
add esp, 0xc
xor eax, eax
mov edi, 0x10137c31
shl ecx, 4
lea edx, [ecx + 0x101378b1]
jmp 0x10036900
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 0x10036900
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 0x10036cf0
push 0x20
push 0x10137bf0
push 0x10137bb0
call fcn.101175c0
inc ebx
add esp, 0xc
cmp ebx, 0x10
jb 0x100368c0
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 0x10036d81
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 0x10036dc1
pop edi
pop esi
pop ebp
pop ebx
ret 8