Function at 0x10012a10
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebx
mov ecx, eax
lea edx, [eax + 0x13c4]
mov ebx, esp
and esp, 0xfffffff8
sub esp, 0x24
cmp eax, edx
push esi
mov esi, dword [ebx + 0x10]
push edi
push ebp
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], edx
ja 0x10012dfe
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x2c]
nop
xor edx, edx
cmp ecx, 0x119e
ja 0x10012e88
je 0x10012e28
cmp ecx, 0x2e7
ja 0x10012d55
je 0x10012cd8
lea eax, [ecx - 0x1d4]
cmp eax, 0xdc
ja case.0x10012a7e.469
movzx eax, byte [eax + 0x100130ac]
jmp dword [eax*4 + 0x10013094]
mov dword [esp + 0x28], edx
jmp case.0x10012a7e.469
cmp dword [esi], 0x20
mov edi, dword [ebx + 0xc]
jb case.0x10012a7e.469
mov ecx, 0x445e
cmp ecx, 0x4599
ja 0x10012b5d
je case.0x10012b75.18069
lea eax, [ecx - 0x445e]
cmp eax, 0xfc
ja case.0x10012b75.17881
movzx edx, byte [eax + 0x100131a0]
jmp dword [edx*4 + 0x1001318c]
xor ebp, dword [edi]
add edi, 4
mov eax, ebp
shr eax, 0x10
mov edx, ebp
and eax, 0xff
mov eax, dword [eax*4 + 0x100381a8]
shr edx, 8
and edx, 0xff
xor eax, dword [edx*4 + 0x100385a8]
mov edx, ebp
shr edx, 0x18
xor eax, dword [edx*4 + 0x10037da8]
and ebp, 0xff
xor eax, dword [ebp*4 + 0x100389a8]
mov ebp, eax
jmp case.0x10012b75.17881
mov eax, ebp
shr eax, 0x10
and eax, 0xff
mov eax, dword [eax*4 + 0x100381a8]
mov edx, ebp
shr edx, 8
and edx, 0xff
xor eax, dword [edx*4 + 0x100385a8]
mov edx, ebp
shr edx, 0x18
xor eax, dword [edx*4 + 0x10037da8]
and ebp, 0xff
xor eax, dword [ebp*4 + 0x100389a8]
xor eax, dword [edi]
mov ebp, eax
jmp 0x10012c49
lea eax, [ecx - 0x45d8]
cmp eax, 0xfc
ja case.0x10012b75.17881
movzx eax, byte [eax + 0x100132b4]
jmp dword [eax*4 + 0x100132a0]
xor ebp, dword [edi]
jmp 0x10012c49
mov eax, ebp
mov edx, ebp
shr edx, 0x10
and edx, 0xff
mov edx, dword [edx*4 + 0x100381a8]
shr eax, 8
and eax, 0xff
xor edx, dword [eax*4 + 0x100385a8]
mov eax, ebp
shr eax, 0x18
xor edx, dword [eax*4 + 0x10037da8]
and ebp, 0xff
xor edx, dword [ebp*4 + 0x100389a8]
mov ebp, edx
jmp case.0x10012b75.17881
mov edx, ebp
shr edx, 0x10
and edx, 0xff
mov edx, dword [edx*4 + 0x100381a8]
mov eax, ebp
shr eax, 8
and eax, 0xff
xor edx, dword [eax*4 + 0x100385a8]
mov eax, ebp
shr eax, 0x18
xor edx, dword [eax*4 + 0x10037da8]
and ebp, 0xff
xor edx, dword [ebp*4 + 0x100389a8]
sub dword [esi], 0x20
mov ebp, edx
jmp case.0x10012b75.17881
mov edx, ebp
shr edx, 0x10
mov eax, ebp
and edx, 0xff
mov edx, dword [edx*4 + 0x100381a8]
shr eax, 8
and eax, 0xff
xor edx, dword [eax*4 + 0x100385a8]
mov eax, ebp
shr eax, 0x18
xor edx, dword [eax*4 + 0x10037da8]
and ebp, 0xff
xor edx, dword [ebp*4 + 0x100389a8]
xor edx, dword [edi]
mov ebp, edx
sub edi, 0xfffffffc
add ecx, 0x3f
cmp ecx, 0x46d4
jbe 0x10012a9f
cmp dword [esi], 0x20
jae 0x10012a9a
jmp case.0x10012a7e.469
mov eax, dword [ebx + 8]
mov ebp, dword [eax]
jmp case.0x10012a7e.469
mov edi, dword [esp + 0x2c]
jmp case.0x10012a7e.469
cmp dword [esi], edx
not ebp
je case.0x10012a7e.469
test byte [ebx + 0xc], 3
je case.0x10012a7e.469
mov ecx, 0x138e
mov eax, ecx
sub eax, 0x138e
je 0x10012ca7
sub eax, 0x2f
jne 0x10012cc3
dec dword [esi]
jmp 0x10012cc3
mov eax, dword [ebx + 0xc]
movzx edx, byte [eax]
xor edx, ebp
and edx, 0xff
shr ebp, 8
xor ebp, dword [edx*4 + 0x10037da8]
inc eax
mov dword [ebx + 0xc], eax
sub ecx, 0xffffffd1
cmp ecx, 0x13bd
jbe 0x10012c95
cmp dword [esi], 0
jne 0x10012c86
jmp case.0x10012a7e.469
cmp dword [esi], 4
mov dword [esp + 0x24], edx
jb case.0x10012a7e.469
mov ecx, 0x288e
mov eax, ecx
sub eax, 0x288e
je 0x10012cfd
sub eax, 0x5c
jne 0x10012d40
add dword [esi], 0xfffffffc
jmp 0x10012d40
xor ebp, dword [edi]
sub edi, 0xfffffffc
mov eax, ebp
shr eax, 0x10
mov edx, ebp
and eax, 0xff
mov eax, dword [eax*4 + 0x100381a8]
shr edx, 8
and edx, 0xff
xor eax, dword [edx*4 + 0x100385a8]
mov edx, ebp
shr edx, 0x18
xor eax, dword [edx*4 + 0x10037da8]
and ebp, 0xff
xor eax, dword [ebp*4 + 0x100389a8]
mov ebp, eax
sub ecx, 0xffffffa4
cmp ecx, 0x28ea
jbe 0x10012cea
cmp dword [esi], 4
jae 0x10012ce5
jmp case.0x10012a7e.469
cmp ecx, 0x38c
ja 0x10012dc1
je 0x10012db8
mov eax, ecx
sub eax, 0x31e
je 0x10012d88
sub eax, 0x37
jne case.0x10012a7e.469
not ebp
lea eax, [esp + 0x24]
mov ecx, dword [esp + 0x28]
push eax
push ecx
call dword [sym.imp.OLEAUT32.dll_VarI8FromUI1]
jmp case.0x10012a7e.469
mov dword [ebx + 0xc], edi
cmp dword [esi], edx
je case.0x10012a7e.469
mov ecx, dword [ebx + 0xc]
movzx edx, byte [ecx]
xor edx, ebp
and edx, 0xff
shr ebp, 8
xor ebp, dword [edx*4 + 0x10037da8]
inc ecx
dec dword [esi]
mov dword [ebx + 0xc], ecx
jne 0x10012d93
jmp case.0x10012a7e.469
mov dword [esp + 0x10], ebp
jmp case.0x10012a7e.469
cmp ecx, 0x3c3
je 0x10012dfe
cmp ecx, 0x1167
jne case.0x10012a7e.469
mov eax, dword [ebx + 8]
mov edx, dword [eax]
or edx, edx
je 0x10012de4
cmp dword [edx + 0x1c], 0
jne 0x10012e1c
lea esp, [esp]
mov ecx, 0x182c
mov eax, ecx
sub eax, 0x182c
je 0x10012e09
sub eax, 0x2c
jne 0x10012e11
mov eax, dword [esp + 0x10]
pop ebp
pop edi
pop esi
mov esp, ebx
pop ebx
ret
mov dword [esp + 0x10], 0xfffffffe
sub ecx, 0xffffffd4
cmp ecx, 0x1858
jbe 0x10012df0
mov ecx, dword [edx + 0x1c]
mov dword [esp + 0x18], ecx
jmp case.0x10012a7e.469
mov edx, dword [ebx + 0xc]
cmp dword [edx], 0
jge 0x10012e56
mov eax, 0x1583
cmp eax, eax
jne 0x10012e47
mov ecx, dword [edx]
neg ecx
mov dword [esp + 0x1c], 0
mov dword [edx], ecx
add eax, 0x3e
cmp eax, 0x1583
jbe 0x10012e37
jmp case.0x10012a7e.469
mov eax, 0x5b7b
cmp eax, eax
jne 0x10012e75
mov ecx, dword [edx]
mov esi, ecx
sar esi, 4
inc esi
cmp ecx, 0x30
mov dword [esp + 0x1c], esi
jge 0x10012e75
and ecx, 0xf
mov dword [edx], ecx
add eax, 0x20
cmp eax, 0x5b7b
jbe 0x10012e5d
mov esi, dword [ebx + 0x10]
jmp case.0x10012a7e.469
cmp ecx, 0x6e75
ja 0x10012ffb
je 0x10012fcc
cmp ecx, 0x1243
ja 0x10012f99
je 0x10012f4b
mov eax, ecx
sub eax, 0x11d5
je 0x10012ec3
sub eax, 0x37
je 0x10012f7e
jmp case.0x10012a7e.469
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax]
cmp ecx, edx
je 0x10012eed
cmp ecx, 8
jl 0x10012ed6
cmp ecx, 0xf
jle 0x10012eed
mov eax, 0x798c
cmp eax, eax
je 0x10013085
sub eax, 0xfffffff0
cmp eax, 0x798c
jbe 0x10012edd
mov eax, dword [esp + 0x18]
cmp dword [eax + 0x34], edx
je case.0x10012a7e.469
cmp dword [eax + 0x24], ecx
je case.0x10012a7e.469
mov esi, 0x819
mov eax, esi
sub eax, 0x819
je 0x10012f1f
sub eax, 0x4e
jne 0x10012f38
mov ecx, dword [esp + 0x18]
mov dword [ecx + 0x34], eax
jmp 0x10012f38
mov edx, dword [ebx + 8]
mov eax, dword [edx]
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0x34]
mov ecx, dword [eax + 0x28]
push edx
mov edx, dword [eax + 0x24]
push ecx
call edx
sub esp, 0xfffffff8
sub esi, 0xffffffb2
cmp esi, 0x867
jbe 0x10012f08
mov esi, dword [ebx + 0x10]
jmp case.0x10012a7e.469
mov esi, 0x450e
mov eax, esi
sub eax, 0x450e
je 0x10012f64
sub eax, 0x28
je 0x10012dfe
jmp 0x10012f73
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
push ecx
call fcn.10018050
mov dword [esp + 0x10], eax
sub esi, 0xffffffd8
cmp esi, 0x4536
jbe 0x10012f50
mov esi, dword [ebx + 0x10]
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0xc]
mov dword [ecx + 8], edx
mov edx, dword [eax]
mov dword [ecx + 0x24], edx
jmp case.0x10012a7e.469
mov eax, ecx
sub eax, 0x6e07
je 0x10012fbe
sub eax, 0x37
jne case.0x10012a7e.469
mov ecx, dword [esp + 0x14]
push 0x64
call fcn.10019900
sub esp, 0xfffffffc
jmp case.0x10012a7e.469
call fcn.10017ab0
mov dword [esp + 0x14], eax
jmp case.0x10012a7e.469
mov edx, dword [esp + 0x14]
lea esp, [esp]
mov edx, dword [edx]
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
mov ecx, dword [ecx]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x10012fe0
mov edx, dword [ebx + 8]
mov eax, dword [edx]
mov edx, dword [eax + 4]
mov ecx, dword [esp + 0x14]
mov dword [ecx + 4], edx
jmp case.0x10012a7e.469
cmp ecx, 0x74e0
ja 0x10013059
je 0x1001304f
mov eax, ecx
sub eax, 0x6eac
je 0x10013013
add eax, 0xffffffc9
jmp 0x1001305f
mov ecx, dword [ebx + 0xc]
cmp dword [ecx], edx
mov edx, dword [esp + 0x14]
jne 0x10013029
mov dword [ecx], edx
mov ecx, dword [edx + 4]
mov dword [esp + 0x10], ecx
jmp case.0x10012a7e.469
mov eax, 0x8a9
cmp eax, eax
jne 0x1001303c
mov esi, dword [ecx]
mov dword [edx + 8], esi
mov esi, dword [ebx + 0x10]
mov dword [ecx], edx
add eax, 0x22
cmp eax, 0x8a9
jbe 0x10013030
mov eax, dword [edx + 4]
mov dword [esp + 0x10], eax
jmp case.0x10012a7e.469
mov dword [esp + 0x10], 1
jmp case.0x10012a7e.469
cmp ecx, 0x7517
je 0x10012dfe
mov ecx, dword [esp + 0x20]
sub ecx, 0xffffffc9
mov dword [esp + 0x20], ecx
cmp ecx, dword [esp + 0x2c]
jbe 0x10012a40
mov eax, dword [esp + 0x10]
pop ebp
pop edi
pop esi
mov esp, ebx
pop ebx
ret
mov eax, 0xfffffffe
pop ebp
pop edi
pop esi
mov esp, ebx
pop ebx
ret