Function at 0x10046f50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
mov esi, dword [ebp + 8]
xor edx, edx
push edi
mov dword [ebp - 0x10], edx
lea ecx, [esi + 0x10a7a]
lea edi, [esi + 0x10b7a]
mov dword [ebp - 0x18], ecx
lea eax, [esi + 0xba7a]
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x1c], eax
nop dword [eax]
xor eax, eax
mov dword [ebp - 0xc], eax
neg al
mov dword [ebp - 0x20], edx
mov byte [ebp - 1], al
mov ebx, edx
push 0x18
lea eax, [esi + 0xba7a]
push eax
push ecx
mov ecx, esi
call fcn.10004c40
push 0x18
lea eax, [esi + 0xba7a]
mov ecx, esi
push eax
push edi
call fcn.10004c40
mov eax, dword [ebp - 0xc]
mov edx, 0x18
movsx esi, byte [ebp - 1]
mov ecx, ebx
movsx edi, al
mov eax, dword [ebp - 0x14]
nop word [eax + eax]
add byte [eax - 0x100], bl
lea eax, [eax + 1]
add byte [eax - 1], cl
add ebx, edi
add ecx, esi
sub edx, 1
jne 0x10046fd0
mov ebx, dword [ebp + 8]
lea eax, [ebp - 8]
push eax
push 0x18
push dword [ebp - 0x18]
push ebx
call fcn.10046eb0
add esp, 0x10
test al, al
jne 0x10047197
lea eax, [ebp - 8]
push eax
push 0x18
lea eax, [ebx + 0x10b7a]
push eax
push ebx
call fcn.10046eb0
add esp, 0x10
test al, al
jne 0x10047189
mov eax, dword [ebp - 0x10]
mov ebx, eax
mov ecx, dword [ebp + 8]
push 0x18
push dword [ebp - 0x1c]
mov dword [ebp - 0x20], eax
push dword [ebp - 0x18]
call fcn.10004c40
mov ecx, dword [ebp + 8]
push 0x18
push dword [ebp - 0x1c]
push dword [ebp - 0x14]
call fcn.10004c40
mov eax, dword [ebp - 0x14]
mov edx, 0x18
mov ecx, ebx
sub byte [eax - 0x100], bl
lea eax, [eax + 1]
sub byte [eax - 1], cl
add ebx, edi
add ecx, esi
sub edx, 1
jne 0x10047052
mov ebx, dword [ebp + 8]
lea eax, [ebp - 8]
push eax
push 0x18
push dword [ebp - 0x18]
push ebx
call fcn.10046eb0
add esp, 0x10
test al, al
jne 0x1004717e
lea eax, [ebp - 8]
push eax
push 0x18
lea eax, [ebx + 0x10b7a]
push eax
push ebx
call fcn.10046eb0
add esp, 0x10
test al, al
jne 0x10047170
mov eax, dword [ebp - 0x10]
mov ebx, eax
mov ecx, dword [ebp + 8]
push 0x18
push dword [ebp - 0x1c]
mov dword [ebp - 0x20], eax
push dword [ebp - 0x18]
call fcn.10004c40
mov ecx, dword [ebp + 8]
push 0x18
push dword [ebp - 0x1c]
push dword [ebp - 0x14]
call fcn.10004c40
mov eax, dword [ebp - 0x14]
mov edx, 0x18
mov ecx, ebx
xor byte [eax - 0x100], bl
lea eax, [eax + 1]
xor byte [eax - 1], cl
add ebx, edi
add ecx, esi
sub edx, 1
jne 0x100470d4
mov esi, dword [ebp + 8]
lea eax, [ebp - 8]
push eax
push 0x18
push dword [ebp - 0x18]
push esi
call fcn.10046eb0
add esp, 0x10
test al, al
jne 0x10047165
lea eax, [ebp - 8]
push eax
push 0x18
lea edi, [esi + 0x10b7a]
push edi
push esi
call fcn.10046eb0
add esp, 0x10
test al, al
jne 0x10047157
mov eax, dword [ebp - 0xc]
lea ecx, [esi + 0x10a7a]
mov edx, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, 0x100
jl 0x10046f85
inc edx
lea ecx, [esi + 0x10a7a]
mov dword [ebp - 0x10], edx
cmp edx, 0x100
jl 0x10046f80
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
mov dword [eax], 2
mov al, byte [ebp - 1]
jmp 0x100471a3
mov eax, dword [ebp + 0x10]
mov dword [eax], 2
jmp 0x100471a0
mov eax, dword [ebp + 0x10]
mov dword [eax], 1
mov al, byte [ebp - 1]
jmp 0x100471a3
mov eax, dword [ebp + 0x10]
mov dword [eax], 1
jmp 0x100471a0
mov eax, dword [ebp + 0x10]
mov dword [eax], 0
mov al, byte [ebp - 1]
jmp 0x100471a3
mov ecx, dword [ebp + 0x10]
mov dword [ecx], 0
mov al, byte [ebp - 0xc]
mov edx, dword [ebp - 8]
mov ecx, dword [ebp + 0x14]
pop edi
pop esi
pop ebx
mov byte [ecx], al
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov byte [ecx], al
mov eax, edx
mov esp, ebp
pop ebp
ret