Function at 0x102230a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov edx, dword [ebp + 0x10]
sub esp, 0x24
push ebx
mov ebx, dword [ebp + 0xc]
cmp edx, dword [ebx + 0x3ad24]
jge 0x102233d1
mov eax, dword [ebp + 0x14]
cmp eax, dword [ebx + 0x3ad28]
jge 0x102233d1
mov ecx, dword [ebx + 0x3ad44]
imul ecx, edx
push esi
add ecx, eax
mov eax, dword [ebx + 0x3ad3c]
mov eax, dword [eax + ecx*4]
mov dword [ebp - 4], eax
mov eax, dword [ebx + 0x3ad38]
movzx esi, byte [eax + 0x10585030]
mov eax, edx
cdq
idiv esi
mov ecx, eax
mov eax, dword [ebp + 0x14]
cdq
idiv esi
imul ecx, dword [ebx + 0x3ab28]
add ecx, eax
imul edx, ecx, 0x54
mov ecx, dword [ebp - 4]
add edx, dword [ebx + 0x3ab20]
cmp byte [ecx + 0x9f], 0
mov dword [ebp - 0x18], edx
jl 0x1022312d
cmp byte [ecx + 0x14], 0
jg 0x1022312d
mov eax, dword [ebp + 8]
pop esi
pop ebx
inc dword [eax + 0x10]
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp + 8]
xor ebx, ebx
push edi
inc dword [esi + 0xc]
cmp byte [ecx + 0x15], bl
mov al, byte [ecx + 5]
setg bl
mov dword [ebp - 8], ebx
mov ebx, dword [ebp + 0xc]
cmp al, 0x10
je 0x102231a9
cmp al, 0x18
je 0x102231a9
cmp al, 0x13
je 0x10223169
cmp al, 0x15
je 0x10223169
cmp al, 0x14
je 0x10223169
cmp al, 0x16
je 0x10223169
mov eax, dword [ebp - 8]
inc eax
add dword [esi + 0x14], eax
jmp 0x102231ed
inc dword [esi + 0x14]
cmp al, 0x13
je 0x10223178
cmp al, 0x15
je 0x10223178
xor edi, edi
jmp 0x1022317d
mov edi, 1
push edi
push edx
push ecx
call fcn.10223870
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 4]
push ebx
mov eax, dword [eax + edi*4 + 0xc]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x20]
push eax
push esi
call fcn.10223eb0
mov ecx, dword [ebp - 4]
add esp, 0x1c
jmp 0x102231ed
mov eax, dword [ebp - 8]
inc eax
xor edi, edi
mov dword [ebp - 0x1c], eax
lea eax, [ecx + 0xc]
mov dword [ebp - 8], eax
push edi
push edx
push ecx
call fcn.10223870
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 8]
push ebx
mov eax, dword [eax]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x20]
push eax
push esi
call fcn.10223eb0
add dword [ebp - 8], 4
inc edi
mov ecx, dword [ebp - 4]
add esp, 0x1c
mov edx, dword [ebp - 0x18]
cmp edi, dword [ebp - 0x1c]
jl 0x102231b8
mov eax, dword [ecx]
mov edi, dword [ebp + 0x14]
movzx ecx, byte [eax + 0x10585060]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebx + 0x3ee28]
lea ebx, [edi*4]
mov dword [ebp - 0x24], ebx
movzx ebx, byte [eax + 0x10585078]
dec ebx
mov edx, dword [ecx + 0x20]
mov edi, edx
imul edi, dword [ebp + 0x10]
mov eax, dword [ecx + 0x28]
mov dword [ebp - 4], edx
mov dword [ebp - 8], ebx
shl edi, 2
test byte [ecx + 0x8c], 8
je 0x10223320
add eax, edi
mov edi, dword [ebp - 0x24]
add edi, eax
mov dword [ebp + 0x10], edi
test ebx, ebx
jle 0x102233cf
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x20]
dec ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [eax + 0x3e6f8]
mov eax, dword [eax + 0x48]
sub eax, 8
mov dword [ebp - 0xc], eax
xor eax, eax
mov dword [ebp - 0x24], eax
test ecx, ecx
jle 0x10223308
mov ecx, dword [esi + 0x3c]
mov dword [ebp - 0x10], ecx
mov ecx, dword [esi + 0x40]
mov dword [ebp - 0x14], ecx
mov ecx, dword [esi + 0x44]
mov dword [ebp - 0x18], ecx
mov ecx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0x1c], eax
nop dword [eax + eax]
lea eax, [edi + ecx]
movzx edi, word [eax + eax]
mov eax, dword [ebp + 0x10]
add eax, ecx
mov ecx, dword [ebp - 0xc]
movzx eax, word [eax + eax + 2]
sub eax, edi
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
sar ebx, cl
mov ecx, dword [ebp + 0x10]
add ecx, dword [ebp - 4]
add ecx, dword [ebp + 0xc]
movzx eax, word [ecx + ecx]
mov ecx, dword [ebp - 0xc]
sub eax, edi
mov edi, dword [ebp + 0x10]
cdq
xor eax, edx
sub eax, edx
sar eax, cl
mov ecx, dword [ebp - 0x10]
add ecx, ebx
mov dword [ebp - 0x10], ecx
mov dword [esi + 0x3c], ecx
mov ecx, dword [ebp - 0x14]
add ecx, eax
imul eax, ebx
mov dword [ebp - 0x14], ecx
mov dword [esi + 0x40], ecx
mov ecx, dword [ebp - 0x18]
add ecx, eax
mov dword [ebp - 0x18], ecx
mov dword [esi + 0x44], ecx
mov ecx, dword [ebp + 0xc]
inc ecx
sub dword [ebp - 0x1c], 1
mov dword [ebp + 0xc], ecx
jne 0x10223290
mov edx, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x20]
add eax, edx
sub ebx, 1
mov dword [ebp - 0x24], eax
mov dword [ebp - 8], ebx
jne 0x10223266
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [edi + eax]
add ecx, dword [ebp - 0x24]
mov dword [ebp - 0x18], ecx
test ebx, ebx
jle 0x102233cf
mov edi, dword [ebp - 0x20]
dec edi
mov dword [ebp - 0x14], edi
test edi, edi
jle 0x102233be
mov eax, dword [esi + 0x3c]
mov dword [ebp + 0xc], eax
mov eax, dword [esi + 0x40]
mov dword [ebp + 0x10], eax
mov eax, dword [esi + 0x44]
mov dword [ebp - 0x24], eax
mov eax, ecx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edi
nop word [eax + eax]
movzx ecx, byte [eax]
lea ebx, [eax + 1]
movzx eax, byte [ebx]
sub eax, ecx
cdq
mov edi, eax
mov eax, dword [ebp - 0x20]
xor edi, edx
sub edi, edx
mov edx, dword [ebp - 4]
movzx eax, byte [eax + edx]
sub eax, ecx
mov ecx, dword [ebp + 0xc]
add ecx, edi
cdq
xor eax, edx
mov dword [ebp + 0xc], ecx
mov dword [esi + 0x3c], ecx
sub eax, edx
mov ecx, dword [ebp + 0x10]
add ecx, eax
imul eax, edi
mov dword [ebp + 0x10], ecx
mov dword [esi + 0x40], ecx
mov ecx, dword [ebp - 0x24]
add ecx, eax
sub dword [ebp - 0x1c], 1
mov eax, ebx
mov dword [ebp - 0x24], ecx
mov dword [esi + 0x44], ecx
mov dword [ebp - 0x20], eax
jne 0x10223360
mov edx, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x14]
add ecx, edx
sub ebx, 1
mov dword [ebp - 0x18], ecx
mov dword [ebp - 8], ebx
jne 0x10223338
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret