Function at 0x100c2340
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x18
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 4]
push ebx
mov ebx, dword [eax + 8]
mov edx, 1
mov dword [esp + 4], edx
mov dword [esp + 0x14], ebx
test ecx, ecx
jne 0x100c2369
mov eax, 0xfffff445
pop ebx
add esp, 0x18
ret
push esi
mov esi, dword [eax + 0xc]
mov eax, dword [esi]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x10], eax
test al, 1
jne 0x100c2386
pop esi
mov eax, 0xfffff445
pop ebx
add esp, 0x18
ret
push ebp
push edi
mov edi, dword [0x101bc9f0]
mov dword [esp + 0x14], 0
test edi, edi
je 0x100c2424
lea ebp, [ecx - 1]
mov dword [esp + 0x1c], ebp
xor eax, eax
cmp ebp, 0xffffffff
je 0x100c23e1
mov ecx, dword [esp + 0x24]
lea esi, [ecx + ebp*4]
lea ebx, [ebp + 1]
mov ecx, eax
mov eax, dword [esi]
xor edx, edx
xor edx, eax
xor eax, eax
push eax
xor ebp, ebp
push edi
xor ecx, ebp
push ecx
push edx
call fcn.10145530
sub esi, 4
sub ebx, 1
jne 0x100c23b6
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
mov esi, edi
mov ecx, eax
cmp esi, eax
jae 0x100c23ed
mov ecx, esi
mov esi, eax
test ecx, ecx
je 0x100c2403
mov eax, esi
xor edx, edx
div ecx
mov esi, ecx
mov ecx, edx
test edx, edx
jne 0x100c23f1
mov edx, dword [esp + 0x10]
cmp esi, 1
jne 0x100c2699
mov eax, dword [esp + 0x14]
mov edi, dword [eax*4 + 0x101bc9f4]
inc eax
mov dword [esp + 0x14], eax
test edi, edi
jne 0x100c23a5
mov eax, dword [esp + 0x18]
test al, 2
jne 0x100c2444
mov esi, dword [esp + 0x24]
inc edx
mov eax, edx
shr eax, 5
mov eax, dword [esi + eax*4]
mov ecx, edx
and ecx, 0x1f
shr eax, cl
test al, 1
je 0x100c2428
mov dword [esp + 0x10], edx
lea esi, [ebx*4 + 0x10]
lea ecx, [esi*4]
push ecx
call fcn.1013fbbd
mov edi, eax
add esp, 4
mov dword [esp + 0x18], edi
test edi, edi
jne 0x100c2472
pop edi
pop ebp
pop esi
mov eax, 0xfffff447
pop ebx
add esp, 0x18
ret
push esi
push 0
push edi
call fcn.1013f910
push esi
lea edx, [edi + 0x10]
lea ebp, [esi + edi]
push 0
push ebp
mov dword [edi + 0xc], edx
mov dword [edi + 8], ebx
call fcn.1013f910
push esi
mov dword [ebp + 8], ebx
lea eax, [ebp + 0x10]
lea ebx, [esi + ebp]
push 0
push ebx
mov dword [ebp + 0xc], eax
call fcn.1013f910
mov edx, dword [esp + 0x44]
push esi
lea edi, [ebx + esi]
lea ecx, [ebx + 0x10]
push 0
push edi
mov dword [ebx + 0xc], ecx
mov dword [ebx + 8], edx
mov dword [esp + 0x54], edi
call fcn.1013f910
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x5c]
lea eax, [edi + 0x10]
mov dword [edi + 0xc], eax
mov dword [edi + 8], ecx
mov edx, dword [0x101bc9ec]
push edx
push esi
push edi
call fcn.100c0870
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
push eax
push edi
push ecx
call fcn.100c0510
xor edx, edx
add esp, 0x48
cmp dword [esi + 4], edx
je 0x100c251a
mov eax, dword [esi + 4]
mov edi, dword [esi + 0xc]
mov ecx, eax
mov eax, dword [edi + eax*4 - 4]
shl ecx, 5
sub ecx, 0x20
test eax, eax
je 0x100c2518
shr eax, 1
inc edx
test eax, eax
jne 0x100c2511
add edx, ecx
mov eax, 1
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], eax
cmp dword [esp + 0x30], eax
jae 0x100c2548
mov edx, dword [esp + 0x18]
push edx
call fcn.1013db65
add esp, 4
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
add esp, 0x18
ret
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
push edx
push ebp
call fcn.100c0370
mov ecx, dword [esi + 4]
mov eax, dword [ebp + 0xc]
mov edx, dword [esp + 0x34]
mov edi, dword [edx + 0xc]
add ecx, ecx
add ecx, ecx
lea esi, [ecx + eax - 4]
mov eax, dword [esi]
xor edx, edx
div dword [ecx + edi - 4]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x20]
push eax
push ecx
push ebp
push ebx
mov dword [esi], edx
call fcn.100c2200
mov edi, dword [0x101bc9ec]
mov eax, dword [edi + 4]
mov edx, dword [ebx + 4]
add esp, 0x18
cmp edx, eax
jb 0x100c25a5
mov esi, dword [edi + 0xc]
mov edi, dword [ebx + 0xc]
mov ecx, eax
call fcn.100bf760
jmp 0x100c25b6
mov esi, dword [ebx + 0xc]
mov edi, dword [edi + 0xc]
mov ecx, edx
mov edx, eax
call fcn.100bf760
neg eax
test eax, eax
je 0x100c265a
mov edx, dword [esp + 0x24]
push edx
push ebx
call fcn.100c02d0
add esp, 8
test eax, eax
je 0x100c265a
mov eax, 1
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x10], eax
jbe 0x100c2648
mov eax, dword [esp + 0x24]
push eax
push ebx
call fcn.100c02d0
add esp, 8
test eax, eax
je 0x100c2648
mov ecx, dword [esp + 0x2c]
push ecx
push ebx
push ebx
push ebx
call fcn.100c0f00
mov edi, dword [0x101bc9ec]
mov eax, dword [edi + 4]
mov edx, dword [ebx + 4]
add esp, 0x10
cmp edx, eax
jb 0x100c2624
mov esi, dword [edi + 0xc]
mov edi, dword [ebx + 0xc]
mov ecx, eax
call fcn.100bf760
jmp 0x100c2635
mov esi, dword [ebx + 0xc]
mov edi, dword [edi + 0xc]
mov ecx, edx
mov edx, eax
call fcn.100bf760
neg eax
test eax, eax
je 0x100c2672
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
cmp eax, dword [esp + 0x10]
jb 0x100c25e3
mov edx, dword [esp + 0x24]
push edx
push ebx
call fcn.100c02d0
add esp, 8
test eax, eax
jne 0x100c268c
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x30]
jbe 0x100c2544
jmp 0x100c252d
mov eax, dword [esp + 0x18]
push eax
call fcn.1013db65
add esp, 4
pop edi
pop ebp
pop esi
mov eax, 0xfffff445
pop ebx
add esp, 0x18
ret
mov ecx, dword [esp + 0x18]
push ecx
call fcn.1013db65
add esp, 4
pop edi
pop ebp
pop esi
mov eax, 0xfffff445
pop ebx
add esp, 0x18
ret