Function at 0x100a44b0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x320
push ebx
push ebp
push esi
mov esi, dword [esp + 0x330]
push edi
xor edi, edi
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
xor ebp, ebp
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], edi
call dword [eax + 0x18]
mov edx, dword [esp + 0x340]
add esp, 4
mov dword [esp + 0x14], eax
lea ebx, [edx + 3]
and ebx, 0xfffffffc
mov dword [esp + 0x33c], ebx
jle 0x100a4527
mov ecx, dword [esi + 4]
mov eax, dword [esi]
push ecx
call dword [eax + 0x1c]
mov cl, al
add esp, 4
and cl, 0xf
cmp cl, 0xc
mov byte [esp + edi + 0x30], cl
ja 0x100a4642
shr al, 4
cmp al, 0xc
mov byte [esp + edi + 0x31], al
ja 0x100a4642
add edi, 2
cmp edi, ebx
jl 0x100a44f3
mov ecx, ebx
and ecx, 7
cmp cl, 4
jne 0x100a455f
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x1c]
mov ecx, dword [esi]
shl eax, 8
cdq
mov edi, edx
mov edx, dword [esi + 4]
push edx
mov ebp, eax
call dword [ecx + 0x1c]
cdq
add esp, 8
add ebp, eax
adc edi, edx
mov dword [esp + 0x10], 0x10
mov dword [esp + 0x20], edi
test ebx, ebx
mov dword [esp + 0x18], 0
jle 0x100a4635
mov eax, dword [esp + 0x338]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
xor ebx, ebx
mov bl, byte [esp + ecx + 0x30]
cmp eax, ebx
jge 0x100a45c2
xor edi, edi
mov eax, dword [esi + 4]
mov edx, dword [esi]
push eax
call dword [edx + 0x1c]
mov ecx, edi
add esp, 4
xor ecx, 8
add ecx, dword [esp + 0x10]
cdq
call fcn.100c9d10
add ebp, eax
mov eax, dword [esp + 0x20]
adc eax, edx
add edi, 8
cmp edi, 0x20
mov dword [esp + 0x20], eax
jl 0x100a458e
add dword [esp + 0x10], 0x20
mov ecx, 0x10
mov edx, dword [esp + 0x20]
sub ecx, ebx
mov edi, 0xffff
sar edi, cl
mov ecx, ebx
mov eax, ebp
and edi, ebp
call fcn.100c9d30
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x20], edx
sub ecx, ebx
mov edx, 1
mov dword [esp + 0x10], ecx
lea ecx, [ebx - 1]
shl edx, cl
mov ebp, eax
test edi, edx
jne 0x100a460f
mov eax, 1
mov ecx, ebx
shl eax, cl
mov ecx, 1
sub ecx, eax
add edi, ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
inc eax
mov word [ecx], di
add ecx, 2
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x33c]
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x100a457a
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x320
ret
mov eax, dword [esp + 0x14]
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push 0
push eax
push ecx
call dword [edx + 8]
mov edx, dword [esp + 0x344]
add ebx, 7
add esp, 0xc
lea edi, [edx + 4]
shr ebx, 3
lea eax, [esp + 0x24]
push 6
push eax
push esi
call fcn.1009c8d0
mov cx, word [esp + 0x30]
mov ax, word [esp + 0x38]
xor edx, edx
add esp, 0xc
mov dl, byte [esp + 0x29]
shr cx, 4
and cl, 0
and edx, 0xfffffff0
or ecx, edx
xor edx, edx
mov dl, byte [esp + 0x2b]
shr ax, 0xc
or ecx, eax
mov ax, word [esp + 0x2e]
mov word [edi - 4], cx
mov cx, word [esp + 0x26]
shr cx, 4
and cl, 0
and edx, 0xfffffff0
or ecx, edx
mov edx, 6
shr ax, 0xc
or ecx, eax
lea eax, [esp + 0x24]
mov word [edi - 2], cx
mov ecx, edi
mov bp, word [eax]
add eax, 2
and ebp, 0xfff
mov word [ecx], bp
add ecx, 2
dec edx
jne 0x100a46cc
add edi, 0x10
dec ebx
jne 0x100a4665
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x320
ret