Function at 0x10008226
Capabilities:
Encode data using xor

Disassembly:
push esi
mov esi, ecx
call fcn.100081c7
movzx eax, al
dec eax
cmp eax, 0x11
ja case.0x100081ff.3
jmp dword [eax*4 + 0x10008346]
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x24]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.10016930
pop esi
ret
mov ecx, esi
pop esi
jmp 0x1000838e
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x3c]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.1001cb14
pop esi
ret
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x40]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.1001fd2f
pop esi
ret
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x50]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.10027cf5
pop esi
ret
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x44]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.10022bc4
pop esi
ret
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x48]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.100242e6
pop esi
ret
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x4c]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.10026673
pop esi
ret
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x58]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.1002ceb3
pop esi
ret
mov eax, dword [0x1009ec68]
test eax, eax
je case.0x100081ff.3
mov ecx, dword [eax + 0x38]
test ecx, ecx
je case.0x100081ff.3
push esi
call fcn.1001919e
pop esi
ret
mov ecx, esi
pop esi
jmp 0x1000865f
mov ecx, esi
pop esi
jmp 0x100086fa
mov ecx, esi
pop esi
jmp 0x1000882f
mov ecx, esi
pop esi
jmp 0x10008897
cmp dword [0x1009ec60], 0
je case.0x100081ff.3
push esi
call fcn.10010bb6
pop esi
ret
push 0xa4
mov eax, 0x10073bbd
call fcn.1003d36c
mov esi, ecx
call fcn.100081c7
mov ecx, esi
mov bl, al
call fcn.1000803d
mov ecx, esi
mov edi, eax
call fcn.1000803d
mov esi, eax
cmp bl, 1
je 0x100083d0
cmp bl, 2
je 0x100083d0
mov edx, dword [0x1009ec68]
mov ecx, dword [0x1009ec60]
jmp 0x100083fa
mov edx, dword [0x1009ec68]
test edx, edx
je 0x100083ed
mov ecx, dword [edx + 0x58]
test ecx, ecx
je 0x100083ed
push esi
call fcn.1002ec04
mov edx, dword [0x1009ec68]
mov ecx, dword [0x1009ec60]
test ecx, ecx
je 0x100083fa
mov dword [ecx + 0x4c], esi
cmp bl, 3
je 0x10008404
cmp bl, 4
jne 0x10008424
test edx, edx
je 0x1000841d
cmp dword [edx + 0x58], 0
je 0x1000841d
mov ecx, dword [edx + 0x58]
push esi
call fcn.1002ec63
mov ecx, dword [0x1009ec60]
test ecx, ecx
je 0x10008424
mov dword [ecx + 0x50], esi
movzx eax, bl
sub eax, 1
je 0x100085d0
sub eax, 1
je 0x10008566
sub eax, 1
je 0x100084e5
sub eax, 1
jne 0x10008659
movaps xmm0, xmmword [0x100901f0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0x7e1c485a
mov edx, ebx
mov dword [ebp - 0x34], 0x525d505d
mov dword [ebp - 0x30], 0x12595f
mov cl, byte [ebp - 0x48]
xor byte [ebp + edx - 0x47], cl
inc edx
cmp edx, 0x1a
jb 0x10008470
sub esp, 0x18
mov byte [ebp - 0x2d], bl
lea eax, [ebp - 0x47]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0xb0]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], 6
cmp dword [eax + 0x14], 0x10
jb 0x100084ac
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x98]
call fcn.10004179
mov edx, 0xffff3b3b
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x98]
call fcn.100086cd
push ebx
push 1
lea ecx, [ebp - 0x98]
call fcn.1000402e
lea ecx, [ebp - 0xb0]
jmp 0x10008651
movaps xmm0, xmmword [0x1008ffb0]
xor ebx, ebx
movups xmmword [ebp - 0x68], xmm0
mov edx, ebx
movaps xmm0, xmmword [str.BNpLEW]
push edi
movups xmmword [ebp - 0x58], xmm0
mov cl, byte [ebp - 0x68]
xor byte [ebp + edx - 0x67], cl
inc edx
cmp edx, 0x1e
jb 0x10008500
sub esp, 0x18
mov byte [ebp - 0x49], bl
lea eax, [ebp - 0x67]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x80]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], 4
cmp dword [eax + 0x14], 0x10
jb 0x10008539
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x28]
call fcn.10004179
mov edx, 0xff6565ff
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x28]
call fcn.100086cd
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
lea ecx, [ebp - 0x80]
jmp 0x10008651
movaps xmm0, xmmword [0x10090740]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x24], xmm0
mov dword [ebp - 0x14], 0x362d3f1d
mov edx, ebx
mov word [ebp - 0x10], 0x70
mov cl, byte [ebp - 0x24]
xor byte [ebp + edx - 0x23], cl
inc edx
cmp edx, 0x14
jb 0x10008583
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x23]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x60]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], 2
cmp dword [eax + 0x14], 0x10
jb 0x100085bc
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004179
mov byte [ebp - 4], 3
mov edx, 0xffff3b3b
jmp 0x1000863b
movaps xmm0, xmmword [0x1008fed0]
xor ebx, ebx
push edi
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x18], 0x77233f30
mov edx, ebx
mov dword [ebp - 0x14], 0x3f243614
mov word [ebp - 0x10], 0x79
mov cl, byte [ebp - 0x28]
xor byte [ebp + edx - 0x27], cl
inc edx
cmp edx, 0x18
jb 0x100085f4
sub esp, 0x18
mov byte [ebp - 0xf], bl
lea eax, [ebp - 0x27]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x60]
push eax
call fcn.10003c43
add esp, 0x20
mov dword [ebp - 4], ebx
cmp dword [eax + 0x14], 0x10
jb 0x10008629
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x80]
call fcn.10004179
mov byte [ebp - 4], 1
mov edx, 0xff6565ff
lea ecx, [ebp - 0x80]
call fcn.100086cd
push ebx
push 1
lea ecx, [ebp - 0x80]
call fcn.1000402e
lea ecx, [ebp - 0x60]
push ebx
push 1
call fcn.1000402e
call fcn.1003d335
ret
push 0x34
mov eax, 0x10073beb
call fcn.1003d3a0
xor ebx, ebx
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], ebx
mov byte [ebp - 0x28], bl
lea eax, [ebp - 0x28]
mov dword [ebp - 4], ebx
push eax
call fcn.100080ee
mov ecx, eax
call fcn.1000803d
cmp dword [ebp - 0x14], 0x10
lea ecx, [ebp - 0x28]
mov esi, eax
cmovae ecx, dword [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x40]
call fcn.10004179
mov edx, esi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x40]
call fcn.100086cd
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
call fcn.1003d34a
ret
push 0x64
mov eax, 0x10073c30
call fcn.1003d3a0
push 0xf
xor ebx, ebx
pop eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], ebx
mov byte [ebp - 0x40], bl
mov dword [ebp - 4], ebx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], ebx
mov byte [ebp - 0x28], bl
lea eax, [ebp - 0x28]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x40]
push eax
call fcn.100080ee
mov ecx, eax
call fcn.100080ee
cmp dword [ebp - 0x30], ebx
je 0x10008746
cmp dword [ebp - 0x30], 0xff
ja 0x100087b0
cmp dword [ebp - 0x18], 0
je 0x10008752
cmp dword [ebp - 0x18], 0x1e
ja 0x100087b0
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
lea ecx, [ebp - 0x70]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.10004179
mov byte [ebp - 4], 2
lea eax, [ebp - 0x40]
cmp dword [ebp - 0x2c], 0x10
lea ecx, [ebp - 0x58]
cmovae eax, dword [ebp - 0x40]
push eax
call fcn.10004179
push ebx
push ecx
mov byte [ebp - 4], 3
lea eax, [ebp - 0x70]
and dword [esp], 0
push ebx
push ebx
push ebx
push eax
lea eax, [ebp - 0x58]
push eax
push eax
call dword [0x1008e474]
push ebx
push 1
lea ecx, [ebp - 0x58]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x70]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x40]
call fcn.1000402e
call fcn.1003d34a
ret
push 0x1c
mov eax, 0x10073c5d
call fcn.1003d3a0
mov ebx, ecx
xor eax, eax
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x28], al
mov dword [ebp - 4], eax
lea eax, [ebp - 0x28]
push eax
call fcn.100080ee
cmp dword [ebp - 0x18], 0
je 0x10008885
mov ecx, ebx
call fcn.1000803d
mov ecx, ebx
mov edi, eax
call fcn.1000803d
mov ecx, ebx
mov esi, eax
call fcn.1000803d
push eax
push esi
mov edx, edi
lea ecx, [ebp - 0x28]
call fcn.100087cc
pop ecx
pop ecx
push 0
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
call fcn.1003d34a
ret
push 0x34
mov eax, 0x10073cbe
call fcn.1003d3a0
mov esi, ecx
mov dword [ebp - 0x18], 0xf
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x1c], eax
mov byte [ebp - 0x2c], al
call fcn.100081c7
mov ecx, esi
mov bl, al
call fcn.1000803d
movzx ecx, bl
mov edi, eax
sub ecx, 1
je 0x10008a58
sub ecx, 1
je 0x10008a42
sub ecx, 1
je 0x1000893a
sub ecx, 1
jne 0x10008b69
mov edx, edi
call fcn.100078d7
test eax, eax
je 0x10008b69
mov ecx, eax
call fcn.10008062
mov edx, edi
mov ecx, 0x100a30b8
call fcn.10007869
mov ecx, edi
call fcn.10009561
mov esi, eax
test esi, esi
je 0x10008b69
push 4
push esi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10008b69
mov ecx, esi
call fcn.100111f2
jmp 0x10008b69
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.100080ee
mov esi, eax
mov ecx, esi
call fcn.100081c7
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.100081c7
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.100081c7
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.100078d7
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x10008b69
test esi, esi
jne 0x10008a1e
push 0x1c
call fcn.1003c7a6
mov esi, eax
pop ecx
mov dword [ebp - 0x3c], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 3
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008080
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.1003c7a6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 4
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008080
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.1000792d
test al, al
jne 0x1000890c
test ebx, ebx
je 0x1000890c
push 0
push 1
mov ecx, ebx
call fcn.1000402e
push 0x1c
push ebx
call fcn.1003c7fc
pop ecx
pop ecx
jmp 0x1000890c
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x10008a31
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003dff
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x1000890c
mov edx, edi
call fcn.100078d7
test eax, eax
je 0x10008b69
mov ecx, eax
jmp 0x10008b58
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.100080ee
mov esi, eax
mov ecx, esi
call fcn.100081c7
mov bl, al
mov ecx, esi
mov byte [ebp - 0x38], bl
call fcn.100081c7
mov bh, al
mov ecx, esi
mov byte [ebp - 0x34], bh
call fcn.100081c7
mov edx, edi
mov byte [ebp - 0x30], al
call fcn.100078d7
cmp dword [ebp - 0x1c], 0
mov esi, eax
je 0x10008b52
test esi, esi
jne 0x10008b31
push 0x1c
call fcn.1003c7a6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 1
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008080
push 0x1c
mov ebx, eax
mov byte [ebp - 4], 0
call fcn.1003c7a6
mov esi, eax
pop ecx
mov dword [ebp - 0x40], esi
push dword [ebp - 0x30]
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 2
push dword [ebp - 0x34]
push dword [ebp - 0x38]
sub esp, 0x18
mov ecx, esp
push eax
call fcn.10003ba2
mov ecx, esi
call fcn.10008080
push eax
mov edx, edi
mov byte [ebp - 4], 0
call fcn.1000792d
test al, al
jne 0x10008b69
test ebx, ebx
je 0x10008b69
push 0
push 1
mov ecx, ebx
call fcn.1000402e
push 0x1c
push ebx
call fcn.1003c7fc
pop ecx
pop ecx
jmp 0x10008b69
lea eax, [ebp - 0x2c]
cmp esi, eax
je 0x10008b44
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10003dff
mov al, byte [ebp - 0x30]
mov byte [esi + 0x18], bl
mov byte [esi + 0x19], bh
mov byte [esi + 0x1a], al
jmp 0x10008b69
test esi, esi
je 0x10008b69
mov ecx, esi
call fcn.10008062
mov edx, edi
mov ecx, 0x100a30b8
call fcn.10007869
push 0
push 1
lea ecx, [ebp - 0x2c]
call fcn.1000402e
call fcn.1003d34a
ret