Function at 0x1009ab59
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x1024b8c0]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x10254b90], 0
push edi
mov edi, ecx
je 0x1009b0cb
cmp byte [edi + 5], 0
je 0x1009b0c7
mov eax, dword [0x10254b94]
xorps xmm0, xmm0
dec eax
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0xf
push ebx
movups xmmword [ebp - 0x34], xmm0
mov byte [ebp - 0x34], 0
push esi
cmp eax, 6
ja case.default.0x1009aae4
jmp dword [eax*4 + 0x1009b0dc]
lea eax, [ebp - 0x1c]
mov ecx, 0x102421a8
push eax
call fcn.100512f0
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov ecx, 0x102421c0
jmp 0x1009acac
mov ecx, 0x102421d8
jmp 0x1009acac
lea eax, [ebp - 0x1c]
mov ecx, 0x102421f0
push eax
call fcn.10050390
jmp 0x1009acb5
mov ecx, 0x10242208
jmp 0x1009acac
lea eax, [ebp - 0x1c]
mov ecx, 0x10242220
push eax
call fcn.10051150
jmp 0x1009acb5
lea eax, [ebp - 0x1c]
mov ecx, 0x10242238
push eax
call fcn.10051150
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
lea eax, [ebp - 0x1c]
mov ecx, 0x10242250
push eax
call fcn.10051150
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
cmp byte [0x10242268], 0
je 0x1009ac17
cmp byte [0x10242269], 0
jne 0x1009ac65
mov byte [0x10242269], 1
xor esi, esi
nop dword [eax]
xor edx, edx
mov ebx, esi
xor edx, dword [0x10242284]
xor ebx, dword [0x10242280]
xor edx, 0xd28f2c5
xor ebx, 0x1de26cd5
mov ecx, edx
mov eax, ebx
shld ecx, eax, 0xd
shl eax, 0xd
xor edx, ecx
xor ebx, eax
mov eax, ebx
shrd eax, edx, 7
xor al, byte [esi + 0x1024226a]
xor al, bl
mov byte [esi + 0x1024226a], al
inc esi
cmp esi, 0x14
jb 0x1009abd0
jmp 0x1009ac65
xor esi, esi
nop dword [eax]
xor edx, edx
mov ebx, esi
xor edx, dword [0x10242284]
xor ebx, dword [0x10242280]
xor edx, 0xd28f2c5
xor ebx, 0x1de26cd5
mov ecx, edx
mov eax, ebx
shld ecx, eax, 0xd
shl eax, 0xd
xor edx, ecx
xor ebx, eax
mov eax, ebx
shrd eax, edx, 7
xor al, byte [esi + 0x1024226a]
xor al, bl
mov byte [esi + 0x1024226a], al
inc esi
cmp esi, 0x14
jb 0x1009ac20
lea eax, [ebp - 0x35]
push eax
push 0x1024227d
push 0x1024226a
lea ecx, [ebp - 0x1c]
call fcn.1004f960
jmp 0x1009acb5
lea eax, [ebp - 0x1c]
mov ecx, 0x10242288
push eax
call fcn.10050390
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov ecx, 0x102422a0
lea eax, [ebp - 0x1c]
push eax
call fcn.10051220
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b98]
dec eax
cmp eax, 3
ja case.default.0x1009ace0
jmp dword [eax*4 + 0x1009b0f8]
lea eax, [ebp - 0x1c]
mov ecx, 0x102422b8
push eax
call fcn.10051220
jmp 0x1009ad7c
lea eax, [ebp - 0x1c]
mov ecx, 0x102422d0
push eax
call fcn.10051150
jmp 0x1009ad7c
lea eax, [ebp - 0x1c]
mov ecx, 0x102422e8
push eax
call fcn.10051150
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
lea eax, [ebp - 0x1c]
mov ecx, 0x10242300
push eax
call fcn.10051150
jmp 0x1009ad7c
lea eax, [ebp - 0x1c]
mov ecx, 0x10242318
push eax
call fcn.100512f0
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
lea eax, [ebp - 0x1c]
mov ecx, 0x10242330
push eax
call fcn.10051490
cmp dword [ebp - 8], 0xf
lea eax, [ebp - 0x1c]
lea ecx, [ebp - 0x34]
cmova eax, dword [ebp - 0x1c]
push eax
call fcn.1009a4d0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b9c]
test al, 1
je 0x1009ade0
lea eax, [ebp - 0x1c]
mov ecx, 0x10242350
push eax
call fcn.10051490
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009adc0
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b9c]
test al, 2
je 0x1009ae22
lea eax, [ebp - 0x1c]
mov ecx, 0x10242370
push eax
call fcn.10051150
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009ae02
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b9c]
test al, 4
je 0x1009af30
cmp byte [0x10242388], 0
je 0x1009ae97
cmp byte [0x10242389], 0
jne 0x1009aee5
mov byte [0x10242389], 1
xor esi, esi
nop dword [eax]
xor edx, edx
mov ebx, esi
xor edx, dword [0x102423a4]
xor ebx, dword [0x102423a0]
xor edx, 0xd28f2c5
xor ebx, 0x1de26cd5
mov ecx, edx
mov eax, ebx
shld ecx, eax, 0xd
shl eax, 0xd
xor edx, ecx
xor ebx, eax
mov eax, ebx
shrd eax, edx, 7
xor al, byte [esi + 0x1024238a]
xor al, bl
mov byte [esi + 0x1024238a], al
inc esi
cmp esi, 0x10
jb 0x1009ae50
jmp 0x1009aee5
xor esi, esi
nop dword [eax]
xor edx, edx
mov ebx, esi
xor edx, dword [0x102423a4]
xor ebx, dword [0x102423a0]
xor edx, 0xd28f2c5
xor ebx, 0x1de26cd5
mov ecx, edx
mov eax, ebx
shld ecx, eax, 0xd
shl eax, 0xd
xor edx, ecx
xor ebx, eax
mov eax, ebx
shrd eax, edx, 7
xor al, byte [esi + 0x1024238a]
xor al, bl
mov byte [esi + 0x1024238a], al
inc esi
cmp esi, 0x10
jb 0x1009aea0
lea eax, [ebp - 0x35]
push eax
push 0x10242399
push 0x1024238a
lea ecx, [ebp - 0x1c]
call fcn.1004f960
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009af10
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b9c]
test al, 8
je 0x1009afb0
lea eax, [ebp - 0x1c]
mov ecx, 0x102423a8
push eax
call fcn.100513c0
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009af52
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
lea eax, [ebp - 0x1c]
mov ecx, 0x102423c0
push eax
call fcn.10050860
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009af90
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b9c]
test al, 0x10
je 0x1009aff2
lea eax, [ebp - 0x1c]
mov ecx, 0x102423e0
push eax
call fcn.10050930
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009afd2
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b9c]
test al, 0x20
je 0x1009b034
lea eax, [ebp - 0x1c]
mov ecx, 0x10242400
push eax
call fcn.10051220
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009b014
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov eax, dword [0x10254b9c]
test al, 0x40
je 0x1009b071
lea eax, [ebp - 0x1c]
mov ecx, 0x10242418
push eax
call fcn.100513c0
cmp dword [ebp - 8], 0xf
lea edx, [ebp - 0x1c]
cmova edx, dword [ebp - 0x1c]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009b056
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x34]
call fcn.10046cb0
lea ecx, [ebp - 0x1c]
call fcn.10045300
mov ecx, dword [0x1024c6c0]
lea edx, [ebp - 0x34]
cmp dword [ebp - 0x20], 0xf
push 0
cmova edx, dword [ebp - 0x34]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x1c8]
call eax
mov ecx, dword [ebp - 0x20]
pop esi
pop ebx
cmp ecx, 0xf
jbe 0x1009b0c7
mov edx, dword [ebp - 0x34]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1009b0bd
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1009b0bd
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.10102d1a
add esp, 8
mov byte [edi + 5], 0
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop edi
call fcn.10103042
mov esp, ebp
pop ebp
ret