Function at 0x10016169
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [0x10064040]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [0x1011eb84]
mov dword [ebp - 0x1c], 2
mov eax, dword [esi + 0x3e48]
lea ecx, [esi + 0x4764]
movss xmm0, dword [eax + 0x1c]
movss xmm2, dword [eax + 0x20]
subss xmm0, dword [0x1005fa14]
mov byte [eax + 0xac], 1
subss xmm2, xmm2
mov eax, dword [esi + 0x3e48]
movss xmm1, dword [eax + 0x14]
subss xmm1, dword [eax + 0x78]
addss xmm1, xmm0
movss xmm0, dword [eax + 0x18]
subss xmm0, dword [eax + 0x7c]
mov byte [eax + 0x135], 1
movss dword [eax + 0xf0], xmm1
addss xmm0, xmm2
movss dword [eax + 0xf4], xmm0
lea eax, [ebp - 0x1c]
movss xmm1, dword [esi + 0x3790]
movss xmm0, dword [esi + 0x3794]
push eax
movss dword [ebp - 0x18], xmm1
movss dword [ebp - 0x14], xmm0
call fcn.100310d0
mov dword [esi + 0x3790], 0
mov dword [esi + 0x3794], 0
call fcn.10029ac0
mov eax, dword [0x1011ebb0]
cmp eax, 3
ja case.default.0x10015e4a
jmp dword [eax*4 + 0x10016484]
cmp dword [0x1011ebac], 0
mov dword [ebp - 0x18], 0x42dc0000
sete dl
mov dword [ebp - 0x14], 0x42200000
mov dword [ebp - 0x10], 0xa6aeab80
xor ecx, ecx
mov dword [ebp - 0xc], 0x100b2aa
nop dword [eax]
mov al, cl
sub al, 0x3f
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 6
jb 0x10015e80
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 9], 0
push eax
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je 0x10015eb0
xor esi, esi
mov dword [0x1011ebac], esi
jmp 0x10015eb6
mov esi, dword [0x1011ebac]
mov eax, dword [0x1011eb84]
mov edx, dword [eax + 0x3e48]
cmp byte [edx + 0xaf], 0
jne 0x10015f1d
movss xmm1, dword [edx + 0xf8]
addss xmm1, dword [0x1005f85c]
movss xmm0, dword [edx + 0xfc]
movss dword [edx + 0xf0], xmm1
movss dword [edx + 0xf4], xmm0
mov eax, dword [edx + 0x120]
mov ecx, dword [edx + 0x124]
mov dword [edx + 0x118], eax
mov eax, dword [edx + 0x130]
mov dword [edx + 0x11c], ecx
mov dword [edx + 0x12c], eax
mov byte [edx + 0x134], 1
cmp esi, 1
mov dword [ebp - 0x18], 0x42dc0000
mov dword [ebp - 0x14], 0x42200000
sete dl
mov dword [ebp - 0x10], 0xb0ada987
mov word [ebp - 0xc], 0xb0
xor ecx, ecx
mov byte [ebp - 0xa], 1
mov al, cl
sub al, 0x40
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 5
jb 0x10015f44
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 0xa], 0
push eax
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je case.default.0x10015e4a
mov dword [0x1011ebac], 1
jmp case.default.0x10015e4a
cmp dword [0x1011eba4], 0
mov dword [ebp - 0x18], 0x42dc0000
sete dl
mov dword [ebp - 0x14], 0x42200000
mov dword [ebp - 0xc], 0x929285
xor ecx, ecx
mov byte [ebp - 8], 1
mov al, cl
sub al, 0x40
xor byte [ebp + ecx - 0xc], al
inc ecx
cmp ecx, 3
jb 0x10015fa2
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 8], 0
push eax
lea ecx, [ebp - 0xc]
call fcn.10028e30
add esp, 8
test al, al
je 0x10015fd2
xor esi, esi
mov dword [0x1011eba4], esi
jmp 0x10015fd8
mov esi, dword [0x1011eba4]
mov eax, dword [0x1011eb84]
mov edx, dword [eax + 0x3e48]
cmp byte [edx + 0xaf], 0
jne 0x1001603f
movss xmm1, dword [edx + 0xf8]
addss xmm1, dword [0x1005f85c]
movss xmm0, dword [edx + 0xfc]
movss dword [edx + 0xf0], xmm1
movss dword [edx + 0xf4], xmm0
mov eax, dword [edx + 0x120]
mov ecx, dword [edx + 0x124]
mov dword [edx + 0x118], eax
mov eax, dword [edx + 0x130]
mov dword [edx + 0x11c], ecx
mov dword [edx + 0x12c], eax
mov byte [edx + 0x134], 1
cmp esi, 1
mov dword [ebp - 0x18], 0x42dc0000
mov dword [ebp - 0x14], 0x42200000
sete dl
mov dword [ebp - 0x10], 0xaea3a983
mov word [ebp - 0xc], 0xb7
xor ecx, ecx
mov byte [ebp - 0xa], 1
mov al, cl
sub al, 0x40
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 5
jb 0x10016066
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 0xa], 0
push eax
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je 0x10016099
mov esi, 1
mov dword [0x1011eba4], esi
jmp 0x1001609f
mov esi, dword [0x1011eba4]
mov eax, dword [0x1011eb84]
mov edx, dword [eax + 0x3e48]
cmp byte [edx + 0xaf], 0
jne 0x10016106
movss xmm1, dword [edx + 0xf8]
addss xmm1, dword [0x1005f85c]
movss xmm0, dword [edx + 0xfc]
movss dword [edx + 0xf0], xmm1
movss dword [edx + 0xf4], xmm0
mov eax, dword [edx + 0x120]
mov ecx, dword [edx + 0x124]
mov dword [edx + 0x118], eax
mov eax, dword [edx + 0x130]
mov dword [edx + 0x11c], ecx
mov dword [edx + 0x12c], eax
mov byte [edx + 0x134], 1
cmp esi, 2
mov dword [ebp - 0x18], 0x42dc0000
mov dword [ebp - 0x14], 0x42200000
sete dl
mov dword [ebp - 0x10], 0xa6aab58f
mov word [ebp - 0xc], 0xb6
xor ecx, ecx
mov byte [ebp - 0xa], 1
nop dword [eax]
mov al, cl
sub al, 0x40
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 5
jb 0x10016130
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 0xa], 0
push eax
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je case.default.0x10015e4a
mov dword [0x1011eba4], 2
jmp case.default.0x10015e4a
cmp dword [0x1011eba8], 0
mov dword [ebp - 0x18], 0x42dc0000
sete dl
mov dword [ebp - 0x14], 0x42200000
mov dword [ebp - 0x10], 0xbda2ae91
xor ecx, ecx
mov dword [ebp - 0xc], 0x100b4a0
mov al, cl
sub al, 0x3f
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 6
jb 0x10016191
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 9], 0
push eax
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je 0x100161c1
xor esi, esi
mov dword [0x1011eba8], esi
jmp 0x100161c7
mov esi, dword [0x1011eba8]
mov eax, dword [0x1011eb84]
mov edx, dword [eax + 0x3e48]
cmp byte [edx + 0xaf], 0
jne 0x1001622e
movss xmm1, dword [edx + 0xf8]
addss xmm1, dword [0x1005f85c]
movss xmm0, dword [edx + 0xfc]
movss dword [edx + 0xf0], xmm1
movss dword [edx + 0xf4], xmm0
mov eax, dword [edx + 0x120]
mov ecx, dword [edx + 0x124]
mov dword [edx + 0x118], eax
mov eax, dword [edx + 0x130]
mov dword [edx + 0x11c], ecx
mov dword [edx + 0x12c], eax
mov byte [edx + 0x134], 1
cmp esi, 1
mov dword [ebp - 0x18], 0x42dc0000
mov dword [ebp - 0x14], 0x42200000
sete dl
mov dword [ebp - 0x10], 0xb4a2a796
mov dword [ebp - 0xc], 0x100a8aa
xor ecx, ecx
mov al, cl
sub al, 0x3f
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 6
jb 0x10016252
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 9], 0
push eax
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je 0x10016285
mov esi, 1
mov dword [0x1011eba8], esi
jmp 0x1001628b
mov esi, dword [0x1011eba8]
mov eax, dword [0x1011eb84]
mov edx, dword [eax + 0x3e48]
cmp byte [edx + 0xaf], 0
jne 0x100162f2
movss xmm1, dword [edx + 0xf8]
addss xmm1, dword [0x1005f85c]
movss xmm0, dword [edx + 0xfc]
movss dword [edx + 0xf0], xmm1
movss dword [edx + 0xf4], xmm0
mov eax, dword [edx + 0x120]
mov ecx, dword [edx + 0x124]
mov dword [edx + 0x118], eax
mov eax, dword [edx + 0x130]
mov dword [edx + 0x11c], ecx
mov dword [edx + 0x12c], eax
mov byte [edx + 0x134], 1
cmp esi, 2
mov dword [ebp - 0x18], 0x42dc0000
mov dword [ebp - 0x14], 0x42200000
sete dl
mov dword [ebp - 0x10], 0xabacb292
mov dword [ebp - 0xc], 0xb5a3a3
xor ecx, ecx
mov byte [ebp - 8], 1
nop word [eax + eax]
mov al, cl
sub al, 0x3f
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 7
jb 0x10016320
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 8], 0
push eax
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je 0x10016353
mov esi, 2
mov dword [0x1011eba8], esi
jmp 0x10016359
mov esi, dword [0x1011eba8]
mov eax, dword [0x1011eb84]
mov edx, dword [eax + 0x3e48]
cmp byte [edx + 0xaf], 0
jne 0x100163c0
movss xmm1, dword [edx + 0xf8]
addss xmm1, dword [0x1005f85c]
movss xmm0, dword [edx + 0xfc]
movss dword [edx + 0xf0], xmm1
movss dword [edx + 0xf4], xmm0
mov eax, dword [edx + 0x120]
mov ecx, dword [edx + 0x124]
mov dword [edx + 0x118], eax
mov eax, dword [edx + 0x130]
mov dword [edx + 0x11c], ecx
mov dword [edx + 0x12c], eax
mov byte [edx + 0x134], 1
cmp esi, 3
mov dword [ebp - 0x18], 0x42dc0000
mov dword [ebp - 0x14], 0x42200000
sete dl
mov dword [ebp - 0xc], 0x91f393
mov byte [ebp - 8], 1
xor ecx, ecx
mov al, cl
sub al, 0x40
xor byte [ebp + ecx - 0xc], al
inc ecx
cmp ecx, 3
jb 0x100163e1
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 8], 0
push eax
lea ecx, [ebp - 0xc]
call fcn.10028e30
add esp, 8
test al, al
je case.default.0x10015e4a
mov dword [0x1011eba8], 3
jmp case.default.0x10015e4a
mov dword [ebp - 0x18], 0x42dc0000
xor ecx, ecx
mov dword [ebp - 0x14], 0x42200000
mov dword [ebp - 0x10], 0xa5b7b593
mov word [ebp - 0xc], 0xa2
mov byte [ebp - 0xa], 1
mov al, cl
sub al, 0x40
xor byte [ebp + ecx - 0x10], al
inc ecx
cmp ecx, 5
jb 0x10016434
push ecx
lea eax, [ebp - 0x18]
mov byte [ebp - 0xa], 0
push eax
mov dl, 1
lea ecx, [ebp - 0x10]
call fcn.10028e30
add esp, 8
test al, al
je case.default.0x10015e4a
mov dword [0x1011ebb4], 0
call fcn.10029bf0
mov ecx, 1
call fcn.1001a8d0
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.100555b4
mov esp, ebp
pop ebp
ret