Function at 0x1001acd0
Capabilities:
Encode data using xor

Disassembly:
push ecx
mov eax, dword [esp + 0x10]
xor ecx, ecx
dec eax
push ebp
mov ebp, dword [esp + 0xc]
cmp eax, 0xa
ja case.default.0x1001ace9
push ebx
push esi
push edi
jmp dword [eax*4 + 0x1001b2c0]
mov edi, dword [esp + 0x1c]
test edi, edi
jle 0x1001b2b7
dec edi
lea esi, [ebp + 4]
shr edi, 2
inc edi
movsx eax, word [esi - 4]
lea esi, [esi + 8]
lea edx, [eax + eax*2]
movsx eax, word [esi - 0xa]
add edx, eax
movsx eax, word [esi - 8]
lea edx, [edx + edx*2]
add edx, eax
movsx eax, word [esi - 6]
lea edx, [edx + edx*2]
add edx, eax
movzx eax, word [edx*4 + 0x1007cf7a]
add ecx, eax
sub edi, 1
jne 0x1001ad04
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov edi, dword [esp + 0x1c]
test edi, edi
jle 0x1001b2b7
dec edi
lea esi, [ebp + 4]
shr edi, 2
inc edi
movsx eax, word [esi - 4]
lea esi, [esi + 8]
lea edx, [eax + eax*2]
movsx eax, word [esi - 0xa]
add edx, eax
movsx eax, word [esi - 8]
lea edx, [edx + edx*2]
add edx, eax
movsx eax, word [esi - 6]
lea edx, [edx + edx*2]
add edx, eax
movzx eax, word [edx*4 + 0x1007cf78]
add ecx, eax
sub edi, 1
jne 0x1001ad51
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x1001b2b7
dec eax
lea esi, [ebp + 4]
shr eax, 2
inc eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x10], eax
movsx eax, word [esi - 4]
cdq
xor eax, edx
sub eax, edx
movsx ebp, ax
movsx eax, word [esi - 2]
cdq
xor eax, edx
sub eax, edx
movsx ebx, ax
movsx eax, word [esi]
cdq
xor eax, edx
sub eax, edx
movsx edi, ax
movsx eax, word [esi + 2]
cdq
xor eax, edx
sub eax, edx
movsx esi, ax
lea eax, [ebx + ebp*2]
add eax, ebp
lea edx, [edi + eax*2]
add edx, eax
lea eax, [esi + edx*2]
add eax, edx
movzx edx, word [eax*4 + 0x1007d022]
xor eax, eax
test esi, esi
mov esi, dword [esp + 0x20]
setg al
add edx, eax
xor eax, eax
test edi, edi
setg al
add edx, eax
xor eax, eax
test ebx, ebx
setg al
add edx, eax
xor eax, eax
test ebp, ebp
setg al
add esi, 8
add ecx, eax
mov dword [esp + 0x20], esi
add ecx, edx
sub dword [esp + 0x10], 1
jne 0x1001ada6
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x1001b2b7
dec eax
lea esi, [ebp + 4]
shr eax, 2
inc eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x10], eax
movsx eax, word [esi - 4]
cdq
xor eax, edx
sub eax, edx
movsx ebp, ax
movsx eax, word [esi - 2]
cdq
xor eax, edx
sub eax, edx
movsx ebx, ax
movsx eax, word [esi]
cdq
xor eax, edx
sub eax, edx
movsx edi, ax
movsx eax, word [esi + 2]
cdq
xor eax, edx
sub eax, edx
movsx esi, ax
lea eax, [ebx + ebp*2]
add eax, ebp
lea edx, [edi + eax*2]
add edx, eax
lea eax, [esi + edx*2]
add eax, edx
movzx edx, word [eax*4 + 0x1007d020]
xor eax, eax
test esi, esi
mov esi, dword [esp + 0x20]
setg al
add edx, eax
xor eax, eax
test edi, edi
setg al
add edx, eax
xor eax, eax
test ebx, ebx
setg al
add edx, eax
xor eax, eax
test ebp, ebp
setg al
add esi, 8
add ecx, eax
mov dword [esp + 0x20], esi
add ecx, edx
sub dword [esp + 0x10], 1
jne 0x1001ae48
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jle 0x1001b2b7
dec ebx
lea edi, [ebp + 6]
shr ebx, 2
inc ebx
movsx eax, word [edi - 6]
lea edi, [edi + 8]
lea edx, [eax + eax*8]
movsx eax, word [edi - 0xc]
add edx, eax
movsx eax, word [edi - 0xa]
movzx esi, word [edx*4 + 0x1007d20a]
lea edx, [eax + eax*8]
movsx eax, word [edi - 8]
add edx, eax
movzx eax, word [edx*4 + 0x1007d20a]
add ecx, eax
add ecx, esi
sub ebx, 1
jne 0x1001aee2
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jle 0x1001b2b7
dec ebx
lea edi, [ebp + 6]
shr ebx, 2
inc ebx
movsx eax, word [edi - 6]
lea edi, [edi + 8]
lea edx, [eax + eax*8]
movsx eax, word [edi - 0xc]
add edx, eax
movsx eax, word [edi - 0xa]
movzx esi, word [edx*4 + 0x1007d208]
lea edx, [eax + eax*8]
movsx eax, word [edi - 8]
add edx, eax
movzx eax, word [edx*4 + 0x1007d208]
add ecx, eax
add ecx, esi
sub ebx, 1
jne 0x1001af34
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x1001b2b7
dec eax
lea edi, [ebp + 4]
shr eax, 2
inc eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], eax
nop
movsx eax, word [edi - 4]
cdq
xor eax, edx
sub eax, edx
movsx ebp, ax
movsx eax, word [edi - 2]
cdq
xor eax, edx
sub eax, edx
movsx ebx, ax
movsx eax, word [edi]
cdq
xor eax, edx
sub eax, edx
movsx esi, ax
movsx eax, word [edi + 2]
cdq
xor eax, edx
sub eax, edx
movsx edx, ax
lea eax, [edx + esi*8]
movzx edi, word [eax*4 + 0x1007d2b2]
lea eax, [ebx + ebp*8]
movzx eax, word [eax*4 + 0x1007d2b2]
add edi, eax
xor eax, eax
test edx, edx
setg al
add edi, eax
xor eax, eax
test esi, esi
setg al
add edi, eax
xor eax, eax
test ebx, ebx
setg al
add edi, eax
xor eax, eax
test ebp, ebp
setg al
add ecx, eax
add ecx, edi
mov edi, dword [esp + 0x20]
add edi, 8
sub dword [esp + 0x10], 1
mov dword [esp + 0x20], edi
jne 0x1001af90
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x1001b2b7
dec eax
lea edi, [ebp + 4]
shr eax, 2
inc eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x10], eax
movsx eax, word [edi - 4]
cdq
xor eax, edx
sub eax, edx
movsx ebp, ax
movsx eax, word [edi - 2]
cdq
xor eax, edx
sub eax, edx
movsx ebx, ax
movsx eax, word [edi]
cdq
xor eax, edx
sub eax, edx
movsx esi, ax
movsx eax, word [edi + 2]
cdq
xor eax, edx
sub eax, edx
movsx edx, ax
lea eax, [edx + esi*8]
movzx edi, word [eax*4 + 0x1007d2b0]
lea eax, [ebx + ebp*8]
movzx eax, word [eax*4 + 0x1007d2b0]
add edi, eax
xor eax, eax
test edx, edx
setg al
add edi, eax
xor eax, eax
test esi, esi
setg al
add edi, eax
xor eax, eax
test ebx, ebx
setg al
add edi, eax
xor eax, eax
test ebp, ebp
setg al
add ecx, eax
add ecx, edi
mov edi, dword [esp + 0x20]
add edi, 8
sub dword [esp + 0x10], 1
mov dword [esp + 0x20], edi
jne 0x1001b033
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x1001b2b7
dec eax
lea esi, [ebp + 4]
shr eax, 2
inc eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x10], eax
movsx eax, word [esi - 4]
cdq
xor eax, edx
sub eax, edx
movsx ebp, ax
movsx eax, word [esi - 2]
cdq
xor eax, edx
sub eax, edx
movsx ebx, ax
movsx eax, word [esi]
cdq
xor eax, edx
sub eax, edx
movsx edi, ax
movsx eax, word [esi + 2]
cdq
xor eax, edx
sub eax, edx
movsx edx, ax
imul eax, edi, 0xd
add eax, edx
movzx esi, word [eax*4 + 0x1007d3b2]
imul eax, ebp, 0xd
add eax, ebx
movzx eax, word [eax*4 + 0x1007d3b2]
add esi, eax
xor eax, eax
test edx, edx
setg al
add esi, eax
xor eax, eax
test edi, edi
setg al
add esi, eax
xor eax, eax
test ebx, ebx
setg al
add esi, eax
xor eax, eax
test ebp, ebp
setg al
add ecx, eax
add ecx, esi
mov esi, dword [esp + 0x20]
add esi, 8
sub dword [esp + 0x10], 1
mov dword [esp + 0x20], esi
jne 0x1001b0d6
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x1001b2b7
dec eax
lea esi, [ebp + 4]
shr eax, 2
inc eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x10], eax
movsx eax, word [esi - 4]
cdq
xor eax, edx
sub eax, edx
movsx ebp, ax
movsx eax, word [esi - 2]
cdq
xor eax, edx
sub eax, edx
movsx ebx, ax
movsx eax, word [esi]
cdq
xor eax, edx
sub eax, edx
movsx edi, ax
movsx eax, word [esi + 2]
cdq
xor eax, edx
sub eax, edx
movsx edx, ax
imul eax, edi, 0xd
add eax, edx
movzx esi, word [eax*4 + 0x1007d3b0]
imul eax, ebp, 0xd
add eax, ebx
movzx eax, word [eax*4 + 0x1007d3b0]
add esi, eax
xor eax, eax
test edx, edx
setg al
add esi, eax
xor eax, eax
test edi, edi
setg al
add esi, eax
xor eax, eax
test ebx, ebx
setg al
add esi, eax
xor eax, eax
test ebp, ebp
setg al
add ecx, eax
add ecx, esi
mov esi, dword [esp + 0x20]
add esi, 8
sub dword [esp + 0x10], 1
mov dword [esp + 0x20], esi
jne 0x1001b181
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret
xor ebx, ebx
cmp dword [esp + 0x1c], ecx
jle 0x1001b2b7
nop dword [eax]
movsx eax, word [ebp + ebx*2]
cdq
xor eax, edx
sub eax, edx
movsx edi, ax
movsx eax, word [ebp + ebx*2 + 2]
cdq
xor eax, edx
sub eax, edx
movsx esi, ax
mov eax, 0x10
cmp edi, eax
cmovl eax, edi
mov edx, eax
shl edx, 4
add edx, eax
mov eax, 0x10
cmp esi, eax
cmovl eax, esi
movzx edx, byte [edx + eax + 0x1007d658]
xor eax, eax
test esi, esi
setg al
add edx, eax
xor eax, eax
test edi, edi
setg al
add ecx, eax
add ecx, edx
cmp edi, 0x10
jl 0x1001b28a
sar edi, 1
add ecx, 5
cmp edi, 0x10
jl 0x1001b28a
shr edi, 1
add ecx, 2
cmp edi, 0x10
jae 0x1001b280
cmp esi, 0x10
jl 0x1001b2aa
sar esi, 1
add ecx, 5
cmp esi, 0x10
jl 0x1001b2aa
nop dword [eax]
shr esi, 1
add ecx, 2
cmp esi, 0x10
jae 0x1001b2a0
add ebx, 2
cmp ebx, dword [esp + 0x1c]
jl 0x1001b220
pop edi
pop esi
pop ebx
mov eax, ecx
pop ebp
pop ecx
ret