Function at 0x10008a15
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor eax, eax
lea ebx, [esi + 0x2b0]
push 0x68
push 4
mov ecx, ebx
lea ebp, [esi + 0xc]
mov dword [esp + 0x1c], eax
mov dword [esi + 0x394], eax
mov dword [esi + 0x390], eax
mov dword [esi + 0x38c], eax
mov dword [esi + 0x388], eax
mov dword [esi + 0x384], eax
mov dword [esi + 0x380], eax
mov dword [esi + 0x398], eax
call fcn.10003650
mov edi, dword [esi + 0x2b4]
xor eax, eax
test edi, edi
mov cl, 1
jle 0x10008d57
test cl, cl
je 0x10008a88
cmp byte [eax + ebp], 0
jbe 0x10008a7b
xor cl, cl
inc eax
cmp eax, edi
jl 0x10008a6f
test cl, cl
jne 0x10008d57
lea eax, [esp + 0x12]
lea ecx, [esp + 0x18]
push eax
push ecx
push ebp
mov ecx, ebx
call fcn.10003790
test eax, eax
je 0x10008ab3
movsx edx, word [esp + 0x12]
mov dword [esi + 0x2a4], edx
mov dword [esp + 0x1c], 0
jmp 0x10008af9
mov ecx, 0xfffffff4
mov eax, ebp
sub ecx, esi
mov dl, byte [eax]
xor dl, 1
mov byte [eax], dl
inc eax
lea edx, [ecx + eax]
cmp edx, 0x68
jl 0x10008abc
lea eax, [esp + 0x12]
lea ecx, [esp + 0x18]
push eax
push ecx
push ebp
mov ecx, ebx
call fcn.10003790
test eax, eax
je 0x10008d57
movsx edx, word [esp + 0x12]
mov dword [esi + 0x2a4], edx
mov dword [esp + 0x1c], 1
mov ecx, dword [esp + 0x18]
xor eax, eax
mov dl, byte [ecx + eax]
mov byte [eax + ebp], dl
inc eax
cmp eax, edi
jl 0x10008aff
mov ebx, dword [esi + 4]
test ebx, ebx
je 0x10008cb6
cmp ebx, 5
je 0x10008cbb
mov eax, dword [esi + 0x3b8]
test eax, eax
lea edi, [eax + ebp]
lea ecx, [edi - 1]
jle 0x10008b5b
mov ebp, eax
mov eax, dword [esi + 0x384]
xor edx, edx
shl eax, 1
mov dword [esi + 0x384], eax
mov dl, byte [ecx]
and edx, 0x80000001
jns 0x10008b4f
dec edx
or edx, 0xfffffffe
inc edx
add edx, eax
dec ecx
dec ebp
mov dword [esi + 0x384], edx
jne 0x10008b30
mov eax, dword [esi + 0x3bc]
add edi, eax
test eax, eax
lea ecx, [edi - 1]
jle 0x10008b97
mov ebp, eax
mov eax, dword [esi + 0x398]
xor edx, edx
shl eax, 1
mov dword [esi + 0x398], eax
mov dl, byte [ecx]
and edx, 0x80000001
jns 0x10008b8b
dec edx
or edx, 0xfffffffe
inc edx
add edx, eax
dec ecx
dec ebp
mov dword [esi + 0x398], edx
jne 0x10008b6c
mov eax, dword [esi + 0x3c0]
test eax, eax
lea edx, [eax + edi]
lea ecx, [edx - 1]
jle 0x10008bc8
mov edi, eax
xor eax, eax
mov al, byte [ecx]
and eax, 0x80000001
jns 0x10008bb9
dec eax
or eax, 0xfffffffe
inc eax
mov ebp, dword [esp + 0x14]
dec ecx
dec edi
lea eax, [eax + ebp*2]
mov dword [esp + 0x14], eax
jne 0x10008ba9
cmp ebx, 2
jne 0x10008bd9
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x388], ecx
jmp 0x10008be8
cmp ebx, 3
jne 0x10008be8
mov eax, dword [esp + 0x14]
mov dword [esi + 0x38c], eax
mov eax, dword [esi + 0x3c4]
test eax, eax
lea ebp, [eax + edx]
lea ecx, [ebp - 1]
jle 0x10008c25
mov edi, eax
mov eax, dword [esi + 0x390]
xor edx, edx
shl eax, 1
mov dword [esi + 0x390], eax
mov dl, byte [ecx]
and edx, 0x80000001
jns 0x10008c19
dec edx
or edx, 0xfffffffe
inc edx
add edx, eax
dec ecx
dec edi
mov dword [esi + 0x390], edx
jne 0x10008bfa
mov edi, dword [esi + 0x3c8]
test edi, edi
lea ecx, [edi + ebp - 1]
jle 0x10008c60
mov edx, edi
mov eax, dword [esi + 0x394]
xor ebx, ebx
shl eax, 1
mov dword [esi + 0x394], eax
mov bl, byte [ecx]
and ebx, 0x80000001
jns 0x10008c54
dec ebx
or ebx, 0xfffffffe
inc ebx
add ebx, eax
dec ecx
dec edx
mov dword [esi + 0x394], ebx
jne 0x10008c35
mov eax, dword [esi + 0x3b4]
test eax, eax
lea ecx, [eax + edi]
lea ecx, [ecx + ebp - 1]
jle 0x10008d43
mov edi, eax
mov eax, dword [esi + 0x380]
xor edx, edx
shl eax, 1
mov dword [esi + 0x380], eax
mov dl, byte [ecx]
and edx, 0x80000001
jns 0x10008c96
dec edx
or edx, 0xfffffffe
inc edx
add edx, eax
dec ecx
dec edi
mov dword [esi + 0x380], edx
jne 0x10008c77
mov edx, dword [esp + 0x1c]
xor eax, eax
test edx, edx
pop edi
pop esi
setne al
pop ebp
inc eax
pop ebx
add esp, 0x10
ret
cmp ebx, 5
jne 0x10008d17
xor al, al
xor ecx, ecx
mov byte [esi + 0x39c], al
mov dl, byte [ecx + ebp]
shl dl, cl
or al, dl
inc ecx
cmp ecx, 8
jl 0x10008cc5
mov byte [esi + 0x39c], al
mov edi, 8
xor edx, edx
xor al, al
xor ecx, ecx
cmp edi, 0x4c
jge 0x10008cf0
mov bl, byte [edi + ebp]
shl bl, cl
or al, bl
inc edi
inc ecx
cmp ecx, 8
jl 0x10008ce3
mov byte [edx + esi + 0x39d], al
inc edx
cmp edx, 9
jl 0x10008cdf
mov edx, dword [esp + 0x1c]
xor eax, eax
test edx, edx
pop edi
pop esi
setne al
pop ebp
inc eax
pop ebx
add esp, 0x10
ret
test ebx, ebx
jne 0x10008d43
xor edx, edx
xor edi, edi
xor al, al
xor ecx, ecx
cmp edi, 0x4c
jge 0x10008d30
mov bl, byte [edi + ebp]
shl bl, cl
or al, bl
inc edi
inc ecx
cmp ecx, 8
jl 0x10008d23
mov byte [edx + esi + 0x3aa], al
inc edx
cmp edx, 0xa
jl 0x10008d1f
mov edx, dword [esp + 0x1c]
xor eax, eax
test edx, edx
pop edi
pop esi
setne al
pop ebp
inc eax
pop ebx
add esp, 0x10
ret
mov dword [esi + 0x2a4], 0x2710
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x10
ret