Function at 0x100240f8
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov esi, dword [ebp + 8]
mov eax, dword [esi + 8]
cmp eax, 5
jl 0x10024548
cmp eax, 0x11
jg 0x1002442f
mov eax, dword [ebp + 0x10]
movzx edx, byte [eax + 0x12d]
test dl, 8
je 0x10024199
mov eax, dword [ebp + 0xc]
mov edx, dword [esi]
cmp eax, 1
je 0x10024557
mov eax, dword [ebp + 0xc]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
jle 0x10024420
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 0x14]
mov dword [ebp - 0xc], ecx
xor eax, eax
lea ebx, [ebx + esi]
mov dword [ebp - 4], ebx
lea esi, [esi + edx]
mov dword [ebp - 8], esi
mov ebx, dword [ebp - 8]
movzx ecx, byte [eax + edx]
sub ebx, eax
movzx esi, byte [ebx - 1]
xor esi, ecx
xor ecx, esi
mov byte [eax + edi], cl
mov ecx, dword [ebp - 4]
movzx ebx, byte [ebx - 1]
xor ebx, esi
sub ecx, eax
mov byte [ecx - 1], bl
mov ecx, dword [ebp - 0xc]
add eax, 1
cmp eax, ecx
jl 0x10024168
jmp 0x10024420
mov eax, dword [ebp + 0xc]
cmp eax, 1
je 0x10024564
mov eax, dword [ebp + 0xc]
cmp eax, 2
je 0x100243a0
mov eax, dword [ebp + 0xc]
cmp eax, 4
jne 0x10024248
mov eax, dword [esi]
mov edx, eax
and edx, 3
jne 0x100241ca
mov edi, dword [eax]
jmp 0x100241ec
and eax, 0xfffffffc
test edx, edx
je 0x100241df
mov edi, dword [eax + 4]
mov ecx, edx
neg ecx
shl ecx, 3
shl edi, cl
jmp 0x100241e1
xor edi, edi
mov eax, dword [eax]
shl edx, 3
mov ecx, edx
shr eax, cl
or edi, eax
mov esi, dword [ebp + 0x14]
and esi, 3
jne 0x100241fe
mov eax, dword [ebp + 0x14]
mov dword [eax], edi
jmp 0x10024420
mov ebx, dword [ebp + 0x14]
and ebx, 0xfffffffc
mov edx, esi
shl edx, 3
mov ecx, edx
mov eax, 0xffffffff
shl eax, cl
test esi, esi
je 0x10024237
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x1c], eax
and ecx, eax
mov dword [ebp - 0x20], ecx
neg esi
shl esi, 3
mov ecx, esi
mov esi, dword [ebp - 0x20]
mov eax, edi
shr eax, cl
or esi, eax
mov eax, dword [ebp - 0x1c]
mov dword [ebx + 4], esi
not eax
and eax, dword [ebx]
mov ecx, edx
shl edi, cl
or eax, edi
mov dword [ebx], eax
jmp 0x10024420
mov eax, dword [ebp + 0xc]
cmp eax, 8
jne 0x10024389
mov eax, dword [esi]
test al, 3
jne 0x10024261
mov edi, dword [eax]
mov ebx, dword [eax + 4]
jmp 0x100242c6
mov esi, eax
and esi, 0xfffffff8
and eax, 7
je 0x10024297
mov ebx, dword [esi + 8]
mov dword [ebp - 4], ebx
mov ebx, dword [esi + 0xc]
mov edx, eax
neg edx
lea ecx, [edx*8 + 0x40]
cmp ecx, 0x1f
ja 0x1002428e
mov edi, dword [ebp - 4]
shld ebx, edi, cl
shl edi, cl
jmp 0x1002429b
mov ebx, dword [ebp - 4]
xor edi, edi
shl ebx, cl
jmp 0x1002429b
xor edi, edi
xor ebx, ebx
mov edx, dword [esi]
mov esi, dword [esi + 4]
shl eax, 3
cmp eax, 0x1f
ja 0x100242b6
mov ecx, eax
shrd edx, esi, cl
mov ecx, eax
shr esi, cl
mov dword [ebp - 4], esi
jmp 0x100242c1
xor edx, edx
mov dword [ebp - 4], edx
mov ecx, eax
mov edx, esi
shr edx, cl
or ebx, dword [ebp - 4]
or edi, edx
mov eax, dword [ebp + 0x14]
test al, 3
jne 0x100242da
mov eax, dword [ebp + 0x14]
mov dword [eax], edi
mov dword [eax + 4], ebx
jmp 0x10024420
mov edx, dword [ebp + 0x14]
mov eax, edx
and eax, 0xfffffff8
mov dword [ebp - 0x1c], eax
and edx, 7
mov dword [ebp - 4], edx
mov ecx, edx
shl ecx, 3
mov dword [ebp - 0xc], ecx
mov eax, 0xffffffff
shl eax, cl
test edx, edx
je 0x1002434e
mov ecx, dword [ebp - 0x1c]
mov esi, dword [ecx + 8]
mov dword [ebp - 0x20], esi
cdq
and dword [ebp - 0x20], eax
and edx, dword [ecx + 0xc]
mov ecx, dword [ebp - 4]
neg ecx
lea ecx, [ecx*8 + 0x40]
cmp ecx, 0x1f
ja 0x10024330
mov esi, edi
shrd esi, ebx, cl
mov dword [ebp - 8], esi
mov esi, ebx
shr esi, cl
mov dword [ebp - 4], esi
jmp 0x1002433c
xor esi, esi
mov dword [ebp - 4], esi
mov esi, ebx
shr esi, cl
mov dword [ebp - 8], esi
or edx, dword [ebp - 4]
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x1c]
or ecx, dword [ebp - 8]
mov dword [esi + 8], ecx
mov dword [esi + 0xc], edx
mov esi, dword [ebp - 0x1c]
mov ecx, esi
mov esi, dword [esi]
not eax
cdq
and esi, eax
mov eax, dword [ebp - 0xc]
and edx, dword [ecx + 4]
cmp eax, 0x1f
ja 0x10024370
mov ecx, eax
shld ebx, edi, cl
mov eax, edi
shl eax, cl
jmp 0x10024378
mov ecx, eax
xor eax, eax
mov ebx, edi
shl ebx, cl
or esi, eax
mov eax, dword [ebp - 0x1c]
or edx, ebx
mov dword [eax], esi
mov dword [eax + 4], edx
jmp 0x10024420
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
push eax
push dword [esi]
push edx
call fcn.1007f4d4
add esp, 0xc
jmp 0x10024420
mov eax, dword [esi]
mov esi, eax
and esi, 0xfffffffe
and eax, 1
je 0x100243bf
movsx edx, word [esi + 2]
mov ebx, eax
neg ebx
lea ecx, [ebx*8 + 0x10]
shl edx, cl
jmp 0x100243c1
xor edx, edx
movzx esi, word [esi]
shl eax, 3
mov ecx, eax
sar esi, cl
mov edi, 0xffffffff
mov eax, dword [ebp + 0x14]
or edx, esi
mov esi, eax
and esi, 0xfffffffe
and eax, 1
mov ebx, eax
shl ebx, 3
mov ecx, ebx
shl edi, cl
test eax, eax
je 0x10024410
movzx ecx, word [esi + 2]
mov dword [ebp - 0x1c], edi
and ecx, edi
mov dword [ebp - 0x20], ecx
movzx edi, dx
neg eax
lea ecx, [eax*8 + 0x10]
mov eax, dword [ebp - 0x20]
sar edi, cl
or eax, edi
mov edi, dword [ebp - 0x1c]
mov word [esi + 2], ax
movzx eax, word [esi]
not edi
and eax, edi
mov ecx, ebx
shl edx, cl
or eax, edx
mov word [esi], ax
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
xor eax, eax
mov esp, ebp
pop ebp
ret
cmp eax, 0x19
jl 0x10024548
cmp eax, 0x1f
jle 0x1002445e
cmp eax, 0x32
jl 0x1002444c
cmp eax, 0x34
jle 0x1002445e
jmp 0x10024548
cmp eax, 0x28
jl 0x10024548
cmp eax, 0x30
jg 0x10024548
mov edx, dword [eax*4 + 0x100bc9fc]
mov eax, dword [ebp + 0x10]
movsx edi, byte [eax + 0x120]
cmp edx, 0xffffffff
je 0x1002449e
mov eax, dword [esi]
mov ecx, edi
shl ecx, 2
mov ebx, edi
shl ebx, 5
sub ebx, ecx
mov ecx, dword [ebx + edx*4 + 0x100bcae0]
test ecx, ecx
je 0x100244b0
mov edx, dword [ebp + 0x14]
push edx
push 0
push eax
call ecx
add esp, 0xc
cmp eax, 1
je 0x100244e5
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
mov eax, 0x5f
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
cmp edx, 4
jne 0x100244c1
mov edx, dword [ebp + 0x14]
mov eax, dword [eax]
mov dword [edx], eax
jmp 0x100244e5
mov ebx, dword [ebp + 0x14]
mov edx, dword [eax]
mov dword [ebx], edx
mov edx, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
mov dword [ebx + 4], ecx
cmp edx, 8
je 0x100244e5
mov ecx, dword [ebp + 0x14]
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [ebp + 0x10]
movzx edx, byte [eax + 0x12d]
test dl, 8
je 0x10024548
test edi, edi
je 0x10024505
mov eax, dword [esi + 8]
cmp eax, 0x34
je 0x10024505
cmp eax, 0x32
jne 0x10024548
mov eax, dword [ebp + 0xc]
mov ebx, eax
shr ebx, 0x1f
add ebx, eax
sar ebx, 1
jle 0x10024548
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 8], ebx
xor eax, eax
lea edx, [edx + ecx]
mov dword [ebp - 0xc], edx
mov edx, dword [ebp + 0x14]
mov esi, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
movzx ebx, byte [eax + edx]
sub esi, eax
movzx ecx, byte [esi - 1]
xor ecx, ebx
xor ebx, ecx
mov byte [eax + edx], bl
add eax, 1
xor byte [esi - 1], cl
cmp eax, edi
jl 0x10024527
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
xor eax, eax
mov esp, ebp
pop ebp
ret
movzx eax, byte [edx]
mov edx, dword [ebp + 0x14]
mov byte [edx], al
jmp 0x10024420
mov edx, dword [ebp + 0x14]
mov esi, dword [esi]
movzx eax, byte [esi]
mov byte [edx], al
jmp 0x10024420