Function at 0x10033800
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x444
mov eax, dword [esp + 0x448]
mov eax, dword [eax + 0x18]
cmp eax, 4
mov dword [esp], eax
jl 0x1003381f
mov dword [esp], 4
push ebx
push ebp
mov ebp, dword [esp + 0x454]
push esi
push edi
xor esi, esi
lea eax, [ebp + 8]
nop
cmp dword [eax - 8], 0
jne 0x10033862
cmp dword [eax - 4], 0
jne 0x10033857
cmp dword [eax], 0
jne 0x1003385a
cmp dword [eax + 4], 0
jne 0x1003385f
add esi, 4
add eax, 0x10
cmp esi, 0xff
jle 0x10033830
jmp 0x10033862
inc esi
jmp 0x10033862
add esi, 2
jmp 0x10033862
add esi, 3
mov eax, 0xff
cmp esi, eax
mov dword [esp + 0x20], esi
jge 0x1003387c
nop
cmp dword [ebp + eax*4], 0
jne 0x1003387c
dec eax
cmp eax, esi
jg 0x10033870
mov edx, dword [esp + 0x10]
mov dword [esp + 0x18], eax
sub eax, esi
xor ecx, ecx
test edx, edx
jle 0x100338af
lea ebx, [edx + edx]
mov edi, eax
lea ebp, [eax + eax]
mov eax, edi
cdq
idiv ebx
inc ecx
add edi, ebp
add eax, esi
cmp ecx, dword [esp + 0x10]
mov dword [esp + ecx*4 + 0x20], eax
jl 0x10033894
mov ebp, dword [esp + 0x45c]
mov dword [esp + 0x1c], 0
jmp 0x100338cb
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x45c]
mov eax, dword [esp + 0x10]
test eax, eax
jle 0x100338f2
lea edx, [eax*4]
mov ecx, edx
shr ecx, 2
xor eax, eax
lea edi, [esp + 0x44]
rep stosd dword es:[edi], eax
mov ecx, edx
shr ecx, 2
lea edi, [esp + 0x34]
rep stosd dword es:[edi], eax
xor ecx, ecx
cmp esi, dword [esp + 0x18]
jg 0x1003395a
lea eax, [esp + 0x54]
sub eax, ebp
lea ebx, [ebp + esi*4]
mov dword [esp + 0x14], eax
cmp dword [ebx], 0
je 0x10033950
lea edi, [ecx + 1]
cmp edi, dword [esp + 0x10]
jge 0x1003393a
mov eax, esi
sub eax, dword [esp + ecx*4 + 0x28]
cdq
mov ebp, eax
xor ebp, edx
mov eax, esi
sub eax, dword [esp + ecx*4 + 0x24]
sub ebp, edx
cdq
xor eax, edx
sub eax, edx
cmp ebp, eax
jge 0x1003393a
inc edi
inc ecx
cmp edi, dword [esp + 0x10]
jl 0x10033916
mov edx, dword [esp + 0x14]
mov eax, dword [ebx]
mov dword [edx + ebx], ecx
mov edx, eax
imul edx, esi
add dword [esp + ecx*4 + 0x44], edx
add dword [esp + ecx*4 + 0x34], eax
inc esi
add ebx, 4
cmp esi, dword [esp + 0x18]
jle 0x10033908
xor edi, edi
xor ebp, ebp
xor ebx, ebx
cmp dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
jle 0x100339af
lea ebx, [ebx]
mov ecx, dword [esp + edi*4 + 0x34]
test ecx, ecx
je 0x100339a8
mov eax, ecx
cdq
sub eax, edx
mov edx, eax
mov eax, dword [esp + edi*4 + 0x44]
sar edx, 1
add eax, edx
cdq
idiv ecx
mov esi, eax
mov eax, dword [esp + edi*4 + 0x24]
sub eax, esi
cdq
xor eax, edx
sub eax, edx
add ebp, eax
mov eax, ecx
imul eax, esi
add dword [esp + 0x14], eax
mov dword [esp + edi*4 + 0x24], esi
add ebx, ecx
inc edi
cmp edi, dword [esp + 0x10]
jl 0x10033970
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
add eax, dword [esp + 0x14]
cdq
idiv ebx
cmp ebp, 5
mov ebx, eax
jl 0x100339d6
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, 6
mov dword [esp + 0x1c], eax
jl 0x100338c0
mov edi, dword [esp + 0x458]
mov edx, dword [edi + 0x2c]
imul edx, dword [edi + 0x28]
xor ecx, ecx
test edx, edx
jle 0x10033a21
lea ebx, [ebx]
mov eax, dword [edi + 0x588c]
movzx edx, byte [eax + ecx*8 + 4]
mov esi, dword [esp + edx*4 + 0x54]
lea eax, [eax + ecx*8]
mov edx, esi
shl edx, 5
xor edx, dword [eax]
inc ecx
and edx, 0x60
xor dword [eax], edx
mov dl, byte [esp + esi*4 + 0x24]
mov byte [eax + 4], dl
mov eax, dword [edi + 0x2c]
imul eax, dword [edi + 0x28]
cmp ecx, eax
jl 0x100339f0
cmp dword [esp + 0x10], 1
jle 0x10033a39
mov ecx, dword [edi]
test byte [ecx + 0x44], 1
je 0x10033a39
push edi
call fcn.10033530
add esp, 4
push ebx
lea edx, [esp + 0x28]
push edx
push edi
call fcn.10033730
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x444
ret