Function at 0x4092e4
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb8
mov eax, dword [0x44425a]
mov edx, dword [0x444262]
mov ecx, dword [0x44426c]
push ebx
push esi
push edi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x2c], eax
mov eax, dword [0x44425e]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x38], edx
mov edx, dword [0x444266]
movzx eax, word [0x46b0c2]
mov dword [ebp - 0x34], edx
dec eax
mov dx, word [0x44426a]
mov word [ebp - 0x30], dx
mov dword [ebp - 0x44], ecx
mov ecx, dword [0x444270]
mov edx, dword [0x46b1b4]
mov dword [ebp - 0x40], ecx
mov cx, word [0x444274]
mov word [ebp - 0x3c], cx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
lea eax, [eax + eax*4]
mov ecx, dword [edx + eax*8 + 0x14]
mov dword [0x46b1c4], ecx
mov edx, dword [0x46b1b4]
mov eax, dword [edx + eax*8 + 0x10]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0x10
jg 0x409377
xor eax, eax
jmp 0x4096f2
push 0x2000
call fcn.0042b7bc
pop ecx
mov edi, eax
cmp dword [ebp - 0x20], 0x2000
jle 0x409394
mov eax, 0x2000
jmp 0x409397
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], eax
mov edx, dword [0x46b1c4]
push 0
push edx
push esi
call fcn.0042e350
add esp, 0xc
push esi
mov ecx, dword [ebp - 0x1c]
push ecx
push 1
push edi
call fcn.0042e2b0
sub dword [ebp - 0x1c], 0x10
mov eax, edi
add esp, 0x10
mov dword [ebp - 0x48], eax
xor ebx, ebx
cmp ebx, dword [ebp - 0x1c]
jae 0x40942a
mov edx, dword [ebp - 0x48]
mov cl, byte [edx]
cmp cl, byte [ebp - 0x2c]
jne 0x409421
push 8
lea eax, [ebp - 0x2c]
push eax
mov edx, ebx
add edx, edi
push edx
call fcn.0042bec0
add esp, 0xc
test eax, eax
jne 0x409421
mov eax, ebx
lea ecx, [ebp - 0x38]
add eax, edi
push 0xa
push ecx
add eax, 0xc
push eax
call fcn.0042bec0
add esp, 0xc
test eax, eax
je 0x40942a
mov ecx, ebx
lea edx, [ebp - 0x44]
add ecx, edi
push 0xa
push edx
add ecx, 0xc
push ecx
call fcn.0042bec0
add esp, 0xc
test eax, eax
je 0x40942a
inc ebx
inc dword [ebp - 0x48]
cmp ebx, dword [ebp - 0x1c]
jb 0x4093cc
cmp ebx, dword [ebp - 0x1c]
jb 0x409455
mov edx, dword [ebp - 0x20]
mov eax, dword [0x46b1c4]
add eax, dword [ebp - 0x1c]
sub edx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], edx
mov dword [0x46b1c4], eax
cmp dword [ebp - 0x20], 0x10
jle 0x409455
test byte [esi + 0x12], 0x20
je 0x409384
push edi
call fcn.0042b7cc
pop ecx
cmp ebx, dword [ebp - 0x1c]
jb 0x409468
xor eax, eax
jmp 0x4096f2
add ebx, dword [0x46b1c4]
push 1
push esi
push 0x46
mov dword [0x46b1c4], ebx
call fcn.00401410
add esp, 0xc
dec eax
je 0x40948b
xor eax, eax
jmp 0x4096f2
mov dword [ebp - 0x18], 0x15ff0000
mov eax, dword [ebp - 4]
mov edx, dword [0x46b1b4]
lea eax, [eax + eax*4]
mov ecx, dword [edx + eax*8 + 0xc]
mov edx, dword [0x46b1b4]
sub ecx, dword [edx + eax*8 + 0x14]
mov eax, dword [0x46b0f0]
add eax, dword [0x46b1c4]
add ecx, eax
add ecx, 0x29
cmp dword [0x46b0d8], 0x7d00
mov dword [ebp - 0x14], ecx
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x24], ecx
jbe 0x4094db
mov dword [0x46b0d8], 0x7d00
mov eax, dword [0x46b0d8]
push eax
call fcn.0042b7bc
mov edi, eax
mov eax, dword [0x46b1b4]
pop ecx
push 0
mov edx, dword [eax + 0x14]
push edx
push esi
call fcn.0042e350
add esp, 0xc
push esi
mov ecx, dword [0x46b0d8]
push ecx
push 1
push edi
call fcn.0042e2b0
add esp, 0x10
xor ebx, ebx
jmp 0x40952f
push 6
mov edx, ebx
mov eax, dword [ebp - 0x24]
add eax, 2
add edx, edi
push eax
push edx
call fcn.0042bec0
add esp, 0xc
test eax, eax
je 0x409537
inc ebx
cmp ebx, dword [0x46b0d8]
jb 0x409514
push edi
call fcn.0042b7cc
pop ecx
cmp ebx, dword [0x46b0d8]
jae 0x409615
push 0
mov ecx, dword [0x46b1c4]
add ecx, 0x16
push ecx
push esi
call fcn.0042e350
add esp, 0xc
push esi
push 1
push 4
lea eax, [ebp - 8]
push eax
call fcn.0042e2b0
add esp, 0x10
push esi
call fcn.00430138
pop ecx
push esi
push 1
push 4
lea edx, [ebp - 0xc]
push edx
call fcn.0042e2b0
add esp, 0x10
push esi
call fcn.00430138
pop ecx
push esi
push 1
push 4
lea ecx, [ebp - 0x10]
push ecx
call fcn.0042e2b0
add esp, 0x10
mov eax, dword [0x46b1c4]
add eax, 0x45
push 0
push eax
push esi
call fcn.0042e350
add esp, 0xc
push esi
push 2
push 4
lea edx, [ebp - 0x18]
push edx
call fcn.0042e2b0
add esp, 0x10
xor edx, edx
lea eax, [ebp - 0x18]
mov ecx, dword [ebp - 8]
inc edx
add dword [eax], ecx
mov ecx, dword [ebp - 0xc]
xor dword [eax], ecx
mov ecx, dword [ebp - 0x10]
sub dword [eax], ecx
add eax, 4
cmp edx, 2
jb 0x4095ca
lea eax, [ebp - 0x18]
mov dword [ebp - 0x24], eax
mov edx, dword [ebp - 0x24]
mov byte [edx + 2], 0x15
push 0
mov eax, dword [0x46b1b4]
add ebx, dword [eax + 0x14]
push ebx
push esi
call fcn.0042e350
add esp, 0xc
push esi
push 6
push 1
mov edx, dword [ebp - 0x24]
inc edx
push edx
call fcn.0042e540
add esp, 0x10
mov edx, dword [0x46b1c4]
cmp edx, dword [0x46b10c]
jae 0x409629
sub dword [0x46b10c], edx
mov eax, dword [ebp - 4]
lea eax, [eax + eax*4]
mov ecx, dword [0x46b1b4]
cmp dword [ecx + eax*8 + 0x10], 0x3000
jbe 0x409659
mov ebx, dword [0x46b1b4]
sub edx, dword [ebx + eax*8 + 0x14]
add edx, 0xff
and edx, 0xffffff00
mov dword [ecx + eax*8 + 0x10], edx
mov edx, dword [0x46b1b4]
mov ecx, dword [edx + eax*8 + 0x10]
mov dword [ebp - 0x1c], ecx
shr dword [edx + eax*8 + 8], 3
mov edx, dword [0x46b1b4]
mov ecx, dword [edx + eax*8 + 8]
cmp ecx, dword [ebp - 0x1c]
jbe 0x40967e
shr dword [edx + eax*8 + 8], 1
mov edx, dword [0x46b1b4]
and dword [edx + eax*8 + 0x24], 0x7fffffff
push 0
mov eax, dword [0x46b1b8]
push eax
push esi
call fcn.0042e350
add esp, 0xc
push esi
push 0xf8
push 1
push 0x46b0bc
call fcn.0042e540
add esp, 0x10
mov ecx, dword [0x46b1c0]
push 0
push ecx
push esi
call fcn.0042e350
add esp, 0xc
push esi
push 0x28
movzx eax, word [0x46b0c2]
push eax
mov edx, dword [0x46b1b4]
push edx
call fcn.0042e540
add esp, 0x10
push esi
call fcn.00418690
pop ecx
inc eax
jne 0x4096ed
or eax, 0xffffffff
jmp 0x4096f2
mov eax, 0x46
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret