Function at 0x10073940
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
mov eax, dword [0x103c4120]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push esi
mov esi, ecx
mov dword [ebp - 0x14], eax
xor ecx, ecx
test dword [esi + 0x1d0], 0xfffffff8
jbe 0x10073985
jmp 0x10073970
mov byte [eax + ecx], 0
inc ecx
mov eax, dword [esi + 0x1d0]
shr eax, 3
cmp ecx, eax
mov eax, dword [ebp - 0x14]
jb 0x10073970
mov eax, dword [esi + 0x1e8]
mov ecx, dword [esi + 0x1dc]
sub eax, 0x91
push ebx
push edi
mov edi, dword [esi + 0x1d8]
test ecx, ecx
ja 0x10073b74
jb 0x100739b0
cmp edi, eax
ja 0x10073b74
mov eax, edi
lea ebx, [ebp - 5]
shrd eax, ecx, 3
add eax, 0x110
shr ecx, 3
add eax, esi
xor edx, edx
mov dword [ebp - 0x10], eax
mov ah, byte [eax]
lea ebx, [ebx]
mov cl, dl
mov al, ah
shr al, cl
inc edx
and al, 1
mov byte [ebx], al
dec ebx
cmp edx, 8
jb 0x100739d0
xor dl, dl
xor ecx, ecx
mov al, byte [ebp + ecx - 0xc]
shl al, cl
inc ecx
xor dl, al
cmp ecx, 8
jb 0x100739e5
and edi, 7
or edi, 0
je 0x10073a43
mov ecx, dword [esi + 0x1d8]
lea edi, [ebp - 5]
or bl, 0xff
and ecx, 7
shl bl, cl
mov al, 1
not bl
shl al, cl
and bl, dl
xor bl, al
xor edx, edx
mov cl, dl
lea edi, [edi - 1]
mov al, bl
inc edx
shr al, cl
and al, 1
mov byte [edi + 1], al
cmp edx, 8
jb 0x10073a18
xor dl, dl
xor ecx, ecx
mov al, byte [ebp + ecx - 0xc]
shl al, cl
inc ecx
xor dl, al
cmp ecx, 8
jb 0x10073a30
mov eax, dword [ebp - 0x10]
mov byte [eax], dl
mov ecx, dword [esi + 0x1d8]
mov eax, dword [esi + 0x1dc]
shrd ecx, eax, 3
shr eax, 3
mov eax, dword [esi + 0x1e8]
shr eax, 3
sub eax, ecx
sub eax, 0x13
push eax
lea eax, [esi + 0x111]
add eax, ecx
push 0
push eax
call fcn.101c6a70
mov edx, dword [esi + 0x1d8]
add esp, 0xc
mov ecx, dword [esi + 0x1dc]
mov eax, edx
and eax, 7
or eax, 0
jne 0x10073a9d
shrd edx, ecx, 3
shr ecx, 3
mov byte [edx + esi + 0x110], 0x80
mov edx, dword [esi + 0x1e8]
lea edi, [esi + 0x100]
mov ecx, dword [esi + 0x1d0]
xor eax, eax
shr edx, 3
push 0
mov byte [edx + esi + 0xfe], cl
shrd ecx, eax, 8
mov byte [edx + esi + 0xff], cl
mov edx, dword [esi + 0x1e0]
mov ebx, dword [esi + 0x1e4]
shr eax, 8
mov eax, dword [esi + 0x1e8]
shr eax, 3
add edi, eax
add edx, dword [esi + 0x1d8]
mov ecx, edx
adc ebx, dword [esi + 0x1dc]
mov eax, ebx
shrd ecx, eax, 8
mov byte [edi], dl
shr eax, 8
mov byte [edi + 1], cl
mov eax, ebx
mov ecx, edx
mov byte [edi + 4], bl
shrd ecx, eax, 0x10
shr eax, 0x10
mov eax, ebx
mov byte [edi + 2], cl
shrd edx, eax, 0x18
shr eax, 0x18
mov eax, ebx
mov byte [edi + 3], dl
shr eax, 8
mov byte [edi + 5], al
mov eax, ebx
shr eax, 0x10
mov byte [edi + 6], al
shr ebx, 0x18
mov byte [edi + 7], bl
mov eax, dword [esi + 0x1e8]
shr eax, 3
mov dword [eax + esi + 0x108], 0
mov dword [eax + esi + 0x10c], 0
push dword [esi + 0x1e8]
push dword [esi + 0x1dc]
push dword [esi + 0x1d8]
call fcn.101c82b0
or eax, edx
jne 0x10073d51
jmp 0x10073d29
mov eax, edi
lea ebx, [ebp - 5]
shrd eax, ecx, 3
add eax, 0x110
shr ecx, 3
add eax, esi
xor edx, edx
mov dword [ebp - 0x10], eax
mov ah, byte [eax]
mov edi, edi
mov cl, dl
mov al, ah
shr al, cl
inc edx
and al, 1
mov byte [ebx], al
dec ebx
cmp edx, 8
jb 0x10073b90
xor dl, dl
xor ecx, ecx
mov al, byte [ebp + ecx - 0xc]
shl al, cl
inc ecx
xor dl, al
cmp ecx, 8
jb 0x10073ba5
and edi, 7
or edi, 0
je 0x10073c03
mov ecx, dword [esi + 0x1d8]
lea edi, [ebp - 5]
or bl, 0xff
and ecx, 7
shl bl, cl
mov al, 1
not bl
shl al, cl
and bl, dl
xor bl, al
xor edx, edx
mov cl, dl
lea edi, [edi - 1]
mov al, bl
inc edx
shr al, cl
and al, 1
mov byte [edi + 1], al
cmp edx, 8
jb 0x10073bd8
xor dl, dl
xor ecx, ecx
mov al, byte [ebp + ecx - 0xc]
shl al, cl
inc ecx
xor dl, al
cmp ecx, 8
jb 0x10073bf0
mov eax, dword [ebp - 0x10]
mov byte [eax], dl
mov ecx, dword [esi + 0x1d8]
mov eax, dword [esi + 0x1dc]
shrd ecx, eax, 3
shr eax, 3
mov eax, dword [esi + 0x1e8]
shr eax, 3
sub eax, ecx
dec eax
push eax
lea eax, [esi + 0x111]
add eax, ecx
push 0
push eax
call fcn.101c6a70
mov edx, dword [esi + 0x1d8]
add esp, 0xc
mov ecx, dword [esi + 0x1dc]
mov eax, edx
and eax, 7
or eax, 0
jne 0x10073c5b
shrd edx, ecx, 3
shr ecx, 3
mov byte [edx + esi + 0x110], 0x80
mov ecx, esi
mov byte [esi + 0x1ed], 1
call fcn.10070550
mov eax, dword [esi + 0x1e8]
shr eax, 3
push eax
lea eax, [esi + 0x110]
push 0
push eax
call fcn.101c6a70
mov edx, dword [esi + 0x1e8]
lea edi, [esi + 0x100]
mov ecx, dword [esi + 0x1d0]
xor eax, eax
shr edx, 3
add esp, 0xc
mov byte [edx + esi + 0xfe], cl
shrd ecx, eax, 8
mov byte [edx + esi + 0xff], cl
mov ebx, dword [esi + 0x1e4]
mov edx, dword [esi + 0x1e0]
mov ecx, edx
shr eax, 8
mov eax, dword [esi + 0x1e8]
shr eax, 3
add edi, eax
mov eax, ebx
shrd ecx, eax, 8
shr eax, 8
mov byte [edi + 1], cl
mov eax, ebx
mov ecx, edx
mov byte [edi], dl
shrd ecx, eax, 0x10
mov byte [edi + 4], bl
shr eax, 0x10
mov eax, ebx
mov byte [edi + 2], cl
shrd edx, eax, 0x18
shr eax, 0x18
mov eax, ebx
mov byte [edi + 3], dl
shr eax, 8
mov byte [edi + 5], al
mov eax, ebx
shr eax, 0x10
mov byte [edi + 6], al
shr ebx, 0x18
mov byte [edi + 7], bl
mov eax, dword [esi + 0x1e8]
shr eax, 3
mov dword [eax + esi + 0x108], 0
mov dword [eax + esi + 0x10c], 0
mov dword [esi + 0x1e4], 0
mov dword [esi + 0x1d8], 0
mov dword [esi + 0x1dc], 0
mov dword [esi + 0x1e0], 0
mov ecx, esi
mov byte [esi + 0x1ed], 1
call fcn.10070550
mov edx, dword [esi + 0x1d0]
mov eax, edx
pop edi
shr edx, 3
pop ebx
and eax, 7
jne 0x10073d74
push edx
jmp 0x10073d8e
mov ecx, 8
sub ecx, eax
or al, 0xff
shl al, cl
and byte [edx + esi + 0x10], al
mov eax, dword [esi + 0x1d0]
shr eax, 3
inc eax
push eax
add esi, 0x10
push esi
push dword [ebp - 0x14]
call fcn.101c6b90
mov ecx, dword [ebp - 4]
add esp, 0xc
xor ecx, ebp
xor eax, eax
pop esi
call fcn.101c6a5b
mov esp, ebp
pop ebp
ret 4