Function at 0x100051d0
Capabilities:
Allocate or change rwx memory
Encode data using xor
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
push ebx
push esi
mov esi, ecx
push edi
push 0x100
push 0
mov eax, dword [esi + 0x3c]
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x38]
mov dword [ebp - 8], eax
mov eax, dword [esi + 0x34]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0x30]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 0x2c]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x28]
mov dword [ebp - 0x18], eax
movzx eax, byte [esi + 0xc]
mov edi, dword [esi + 0x44]
mov ebx, dword [esi + 0x40]
mov dword [ebp - 0x1c], eax
movzx eax, byte [esi + 0xb]
mov dword [ebp - 0x20], eax
movzx eax, byte [esi + 0xa]
mov dword [ebp - 0x24], eax
movzx eax, byte [esi + 9]
mov dword [ebp - 0x28], eax
movzx eax, byte [esi + 8]
mov dword [ebp - 0x2c], eax
movzx eax, byte [esi + 7]
mov dword [ebp - 0x30], eax
movzx eax, byte [esi + 6]
mov dword [ebp - 0x34], eax
movzx eax, byte [esi + 5]
mov dword [ebp - 0x38], eax
movzx eax, byte [esi + 4]
push 0x1013c168
mov dword [ebp - 0x3c], eax
call fcn.1000e330
movaps xmm1, xmmword [0x1002c660]
add esp, 0xc
movaps xmm2, xmmword [str._f_f_f_f_f_f_f_f_f_f_f_f_f_f_f_feeeeeeeeeeeeeeee]
xor eax, eax
nop dword [eax + eax]
movups xmm0, xmmword [eax + 0x10029708]
psubb xmm0, xmm1
xorps xmm0, xmm2
movups xmmword [eax + 0x1013c168], xmm0
movups xmm0, xmmword [eax + 0x10029718]
psubb xmm0, xmm1
xorps xmm0, xmm2
movups xmmword [eax + 0x1013c178], xmm0
movups xmm0, xmmword [eax + 0x10029728]
psubb xmm0, xmm1
xorps xmm0, xmm2
movups xmmword [eax + 0x1013c188], xmm0
movups xmm0, xmmword [eax + 0x10029738]
psubb xmm0, xmm1
xorps xmm0, xmm2
movups xmmword [eax + 0x1013c198], xmm0
add eax, 0x40
cmp eax, 0x100
jb 0x10005270
push edi
push ebx
push dword [ebp - 4]
push dword [ebp - 8]
push dword [ebp - 0xc]
push dword [ebp - 0x10]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
push dword [ebp - 0x30]
push dword [ebp - 0x34]
push dword [ebp - 0x38]
push dword [ebp - 0x3c]
push 0x1013c168
push 0
push 0x10130ac0
call fcn.100083d0
mov al, byte [esi + 4]
add esp, 0x50
test al, al
jne 0x10005481
mov dword [0x1013bc88], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov dword [0x1013bc94], eax
movzx eax, byte [esi + 5]
mov dword [0x1013bc90], eax
movzx eax, byte [esi + 6]
mov dword [0x1013bc8c], eax
movzx eax, byte [esi + 8]
mov dword [0x1013bc54], eax
movzx eax, byte [esi + 9]
mov dword [0x1013bc64], eax
movzx eax, byte [esi + 0xa]
mov dword [0x1013bc60], eax
movzx eax, byte [esi + 0xb]
mov dword [0x1013bc5c], eax
movzx eax, byte [esi + 0xc]
mov dword [0x1013bc58], eax
mov eax, dword [esi + 0x28]
test eax, eax
je 0x100053bd
mov dword [0x1013bc3c], eax
lea eax, [ebp - 4]
push eax
push 0x40
push 0x20
push 0x1013bc14
call edi
movups xmm0, xmmword [0x10135c54]
lea eax, [ebp - 4]
push eax
push dword [ebp - 4]
movups xmmword [0x1013bc14], xmm0
push 0x20
movups xmm0, xmmword [0x10135c64]
push 0x1013bc14
movups xmmword [0x1013bc24], xmm0
call edi
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x10005400
mov dword [0x1013bc38], eax
movzx eax, byte [esi + 0xd]
inc al
mov byte [0x1013bc0c], al
movzx eax, byte [esi + 0xf]
add al, 2
mov byte [0x1013bc0d], al
movzx eax, byte [esi + 0x10]
add al, 3
mov byte [0x1013bc0e], al
movzx eax, byte [esi + 0x12]
add al, 4
mov byte [0x1013bc0f], al
movzx eax, byte [esi + 0x13]
add al, 5
mov byte [0x1013bc10], al
mov eax, dword [esi + 0x30]
test eax, eax
je 0x1000543e
mov dword [0x1013bc34], eax
lea eax, [ebp - 4]
push eax
push 0x40
push 0x11
push 0x1013bbf8
call edi
movups xmm0, xmmword [esi + 0x15]
movups xmmword [0x1013bbf8], xmm0
mov al, byte [esi + 0x25]
mov byte [0x1013bc08], al
lea eax, [ebp - 4]
push eax
push dword [ebp - 4]
push 0x11
push 0x1013bbf8
call edi
mov eax, dword [esi + 0x34]
test eax, eax
je 0x1000544a
mov dword [0x1013bc48], eax
mov eax, dword [esi + 0x38]
test eax, eax
je 0x10005456
mov dword [0x1013bc44], eax
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x10005462
mov dword [0x1013bc40], eax
mov eax, dword [esi + 0x40]
test eax, eax
je 0x1000546e
mov dword [0x1013bbf4], eax
mov eax, dword [esi + 0x44]
test eax, eax
je 0x100054de
mov dword [0x1013bbf0], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movzx eax, al
dec eax
cmp eax, 4
ja case.default.0x1000548a
jmp dword [eax*4 + 0x100054e8]
push 0x1388
push 8
jmp 0x100054c5
push 0x1388
push 9
jmp 0x100054c5
push 0x1388
push 0xa
jmp 0x100054c5
push 0x1388
push 0xb
jmp 0x100054c5
push 0x1388
push 0xc
jmp 0x100054c5
push 0x1388
push 0xd
call fcn.10008890
push eax
push ecx
mov edx, 1
mov ecx, 0x1013ab90
call fcn.1000bac0
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret