Function at 0x10009320
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14
push ebx
push ebp
mov ebp, dword [esp + 0x24]
xor ebx, ebx
push esi
xor esi, esi
push edi
mov eax, dword [ebp + 4]
lea ecx, [ebp + 8]
mov dword [esp + 0x2c], ecx
test eax, eax
jle 0x100093a7
mov edi, dword [ecx]
nop
lea eax, [edi + esi*4]
ror ebx, 0x1f
mov ecx, dword [eax + ebp]
inc esi
lea edx, [edi + ecx]
lea eax, [edi + ecx]
mov ecx, dword [edx + ebp]
ror ecx, 0x1f
xor ecx, dword [edx + ebp + 4]
ror ecx, 0x1f
xor ecx, dword [eax + ebp + 8]
ror ecx, 0x1f
xor ecx, dword [eax + ebp + 0xc]
ror ecx, 0x1f
xor ecx, dword [eax + ebp + 0x10]
ror ecx, 0x1f
xor ecx, dword [eax + ebp + 0x14]
ror ecx, 0x1f
xor ecx, dword [eax + ebp + 0x18]
ror ecx, 0x1f
xor ecx, dword [eax + ebp + 0x1c]
xor ebx, ecx
cmp esi, dword [ebp + 4]
jl 0x10009340
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp + 4]
add ecx, ebp
mov edx, esi
movzx eax, word [ecx]
lea ecx, [ecx + 2]
ror ebx, 0x1f
xor ebx, eax
sub edx, 1
jne 0x10009395
jmp 0x100093ad
mov dword [esp + 0x2c], ecx
mov esi, eax
mov eax, 0x7a44c6b
mov dword [esp + 0x10], ebx
mul ebx
mov ecx, ebx
shr edx, 1
imul eax, edx, 0x43
sub ecx, eax
mov eax, dword [esp + 0x28]
lea eax, [eax + ecx*4]
add eax, 0x40c
mov dword [esp + 0x20], eax
mov edi, dword [eax]
test edi, edi
je 0x100094cb
nop dword [eax + eax]
cmp dword [edi + 4], ebx
jne 0x100094b2
cmp dword [edi + 0xc], esi
jne 0x100094b2
mov edx, dword [edi + 0x14]
add esi, esi
mov eax, dword [ebp + 0xc]
add edx, 8
add eax, ebp
add edx, edi
sub esi, 4
jb 0x10009417
mov ecx, dword [edx]
cmp ecx, dword [eax]
jne 0x1000941c
add edx, 4
add eax, 4
sub esi, 4
jae 0x10009406
cmp esi, 0xfffffffc
je 0x1000944d
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x100094b2
cmp esi, 0xfffffffd
je 0x1000944d
mov cl, byte [edx + 1]
cmp cl, byte [eax + 1]
jne 0x100094b2
cmp esi, 0xfffffffe
je 0x1000944d
mov cl, byte [edx + 2]
cmp cl, byte [eax + 2]
jne 0x100094b2
cmp esi, 0xffffffff
je 0x1000944d
mov cl, byte [edx + 3]
cmp cl, byte [eax + 3]
jne 0x100094b2
mov edx, dword [ebp + 4]
mov dword [esp + 0x14], 1
test edx, edx
jle 0x100094c0
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x18], edx
mov eax, dword [eax]
lea ebx, [ecx + 8]
mov dword [esp + 0x1c], eax
add ebx, edi
lea esi, [eax + ebp]
jmp 0x1000947b
mov eax, dword [esp + 0x1c]
mov edx, dword [esi]
lea ebx, [ebx + 4]
add edx, eax
lea esi, [esi + 4]
mov eax, dword [ebx - 4]
add ecx, 8
add eax, ecx
add edx, ebp
add eax, edi
xor ecx, ecx
cmp eax, edx
cmove ecx, dword [esp + 0x14]
sub dword [esp + 0x18], 1
mov eax, ecx
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x14], eax
jne 0x10009477
mov ebx, dword [esp + 0x10]
test eax, eax
jne 0x100094c0
mov edi, dword [edi]
test edi, edi
je 0x100094cb
mov esi, dword [ebp + 4]
jmp 0x100093e0
lea eax, [edi + 8]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov eax, dword [ebp + 4]
lea eax, [eax + eax*2]
add eax, 0xc
add eax, eax
push eax
call fcn.100274ed
mov esi, eax
add esp, 4
test esi, esi
jne 0x100094ed
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov eax, dword [esp + 0x28]
inc dword [eax + 0x638]
mov dword [esi + 8], 0xffffffff
mov eax, dword [ebp + 4]
mov dword [esi + 0xc], eax
cmp dword [ebp + 4], 0
je 0x10009569
mov dword [esi + 0x10], 0x10
lea edi, [esi + 0x18]
mov eax, dword [ebp + 4]
xor edx, edx
lea eax, [eax*4 + 0x10]
mov dword [esi + 0x14], eax
mov eax, dword [ebp + 4]
test eax, eax
jle 0x1000954d
mov ebx, dword [esp + 0x2c]
nop
mov ecx, dword [ebx]
lea eax, [ecx + edx*4]
mov eax, dword [eax + ebp]
sub eax, edi
add eax, ecx
add eax, ebp
mov dword [edi + edx*4], eax
inc edx
mov eax, dword [ebp + 4]
cmp edx, eax
jl 0x10009530
mov ebx, dword [esp + 0x10]
add eax, eax
push eax
mov eax, dword [ebp + 0xc]
add eax, ebp
push eax
mov eax, dword [esi + 0x14]
add eax, 8
add eax, esi
push eax
call fcn.10024bf0
add esp, 0xc
jmp 0x10009577
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov eax, dword [esp + 0x20]
mov dword [esi + 4], ebx
pop edi
mov ecx, dword [eax]
mov dword [esi], ecx
mov dword [eax], esi
lea eax, [esi + 8]
pop esi
pop ebp
pop ebx
add esp, 0x14
ret