Function at 0x10005930
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov eax, dword [0x1001a024]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [ebp + 8]
push edi
mov dword [ebp - 0x40], eax
call fcn.10002570
movzx esi, ax
add esp, 4
mov eax, 0x9000
cmp si, ax
jne 0x10005b80
mov eax, dword [0x1001a010]
mov dword [0x1003b820], eax
mov eax, dword [0x1001a014]
push edi
mov dword [0x1003b824], eax
call fcn.10001e10
mov edx, 0x9000
add esp, 4
cmp ax, dx
je 0x1000599a
mov esi, 0xe021
jmp 0x10005b80
movzx eax, byte [0x1003b81b]
mov dword [ebx], eax
movzx edx, byte [0x1003b81a]
shl edx, 8
or edx, eax
mov dword [ebx], edx
movzx ecx, byte [0x1003b819]
shl ecx, 0x10
or ecx, edx
mov dword [ebx], ecx
movzx eax, byte [0x1003b818]
shl eax, 0x18
or eax, ecx
push edi
mov dword [ebx], eax
call fcn.10001cb0
mov ecx, 0xe023
add esp, 4
cmp ax, cx
jne 0x10005b7b
movzx eax, byte [0x1002b7a8]
push 0x1003b7e4
push 0x100227a8
push eax
push 0
push 0x1003b818
call fcn.10001be0
mov bl, 1
push edi
mov byte [ebp - 0xa], bl
call fcn.10003140
movzx esi, ax
add esp, 0x18
mov eax, 0x9000
cmp si, ax
je 0x10005a63
nop dword [eax]
cmp bl, 9
ja 0x10005b74
movzx eax, byte [0x1002b7a8]
push 0x1003b7e4
push 0x100227a8
push eax
push dword [ebp - 0xa]
push 0x1003b818
call fcn.10001be0
inc bl
push edi
mov byte [ebp - 0xa], bl
call fcn.10003140
movzx esi, ax
add esp, 0x18
mov eax, 0x9000
cmp si, ax
jne 0x10005a20
push 0
xorps xmm0, xmm0
lea eax, [ebp - 0x2f]
movups xmmword [ebp - 0x34], xmm0
push 0
push eax
movups xmmword [ebp - 0x24], xmm0
mov dword [ebp - 0x34], 0x20204ac
mov byte [ebp - 0x30], 0xcc
call fcn.10009980
lea eax, [ebp - 0x30]
push eax
push 1
push eax
push 0x1003b7f4
push 0x1003b7e4
call fcn.10001450
push 0x3e8
lea eax, [ebp - 8]
push eax
push 1
lea eax, [ebp - 0x14]
push eax
movzx eax, byte [ebp - 0x33]
inc ax
movzx eax, ax
push eax
lea eax, [ebp - 0x34]
push eax
push edi
call fcn.10002b10
push 1
lea eax, [ebp - 0x14]
mov byte [ebp - 0xb], 0
push eax
push 2
lea eax, [ebp - 0xb]
push eax
push 1
push 0x202dc
push edi
call fcn.10002aa0
add esp, 0x58
lea eax, [ebp - 0x14]
push 1
push eax
push 5
push 0
push 0
push 0x50204
push edi
call fcn.10002aa0
mov ebx, dword [ebp - 0x40]
add esp, 0x1c
xor ecx, ecx
lea edx, [ecx + 4]
mov al, byte [ecx + 0x1003b7f5]
lea ecx, [ecx + 1]
xor al, byte [ebp + ecx - 0x15]
mov byte [ecx + ebx - 1], al
sub edx, 1
jne 0x10005b01
push 1
lea eax, [ebp - 0x14]
push eax
push 5
push edx
push edx
push 0x50205
push edi
call fcn.10002aa0
mov ecx, 5
add esp, 0x1c
cmp cx, ax
jne 0x10005b7b
xor ecx, ecx
lea edx, [ecx + 4]
nop
mov al, byte [ecx + 0x1003b7f5]
lea ecx, [ecx + 1]
xor al, byte [ebp + ecx - 0x15]
mov byte [ecx + ebx + 3], al
sub edx, 1
jne 0x10005b40
movzx eax, byte [0x1002b7aa]
mov edx, 0x9000
cmp si, dx
mov ecx, 1
cmove eax, ecx
mov byte [0x1002b7aa], al
jmp 0x10005b80
mov esi, 0xe023
jmp 0x10005b80
mov esi, 0xe025
push 0x1f4
lea eax, [ebp - 0x40]
mov dword [ebp - 0x40], 0
push eax
push 1
lea eax, [ebp - 0x3c]
mov dword [0x1002b7b0], 0
push eax
push 1
lea eax, [ebp - 0xc]
mov byte [ebp - 0xc], 2
push eax
push edi
call fcn.10002b10
push 0
push 1
push 1
push edi
call dword [0x1003c83c]
mov ecx, dword [ebp - 4]
add esp, 0x2c
movzx eax, si
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.10008cc1
mov esp, ebp
pop ebp
ret