Function at 0x404f3a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2b8
push ebx
push esi
push edi
push 9
pop ecx
mov esi, 0x44e928
lea edi, [ebp - 0x38]
push 9
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
pop ecx
mov esi, 0x44e900
lea edi, [ebp - 0x60]
push 9
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop ecx
mov esi, 0x44e8d8
lea edi, [ebp - 0x88]
lea eax, [ebp - 0x38]
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
push eax
mov dword [ebp - 4], ebx
movsw word es:[edi], word [esi]
call fcn.00401c36
lea eax, [ebp - 0x60]
push eax
call fcn.00401c36
lea eax, [ebp - 0x88]
push eax
call fcn.00401c36
push dword [ebp + 8]
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043f7f0
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043f800
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.00401a75
add esp, 0x28
test eax, eax
jne 0x40504d
push dword [ebp + 8]
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043f7f0
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043f800
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.00401a75
add esp, 0x1c
test eax, eax
jne 0x40504d
push dword [ebp + 8]
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043f7f0
lea eax, [ebp - 0x88]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043f800
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.00401a75
add esp, 0x1c
test eax, eax
je 0x4052c6
mov eax, dword [ebp - 4]
mov dword [ebp - 8], ebx
push 2
movsx ecx, byte [eax]
pop edi
movsx edx, byte [ecx + eax]
push edi
lea esi, [ecx + edx + 0xf]
add eax, esi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440090
mov eax, dword [ebp - 8]
push edi
lea esi, [esi + eax*4 + 6]
mov eax, dword [ebp - 4]
add eax, esi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440090
mov eax, dword [ebp - 8]
add esp, 0x18
lea esi, [esi + eax + 2]
mov eax, dword [ebp - 4]
add esi, 8
push 4
add eax, esi
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00440090
add esi, 8
add esp, 0xc
cmp esi, dword [ebp - 0xc]
jae 0x4052ba
mov eax, dword [ebp - 4]
cmp dword [ebp - 0x10], ebx
movsx ecx, byte [esi + eax]
je 0x4050db
lea esi, [esi + ecx + 0xf]
push edi
add eax, esi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440090
mov eax, dword [ebp - 8]
add esp, 0xc
lea esi, [esi + eax*4 + 4]
jmp 0x40508f
lea ecx, [esi + ecx + 0x21]
movsx edx, byte [ecx + eax]
lea esi, [ecx + edx + 9]
movsx ecx, byte [eax + esi]
add eax, esi
push ecx
inc eax
push eax
lea eax, [ebp - 0x2b8]
push eax
call fcn.0043fd30
mov eax, dword [ebp - 4]
add esp, 0xc
movsx ecx, byte [esi + eax]
mov byte [ebp + ecx - 0x2b8], bl
movsx ecx, byte [esi + eax]
lea esi, [esi + ecx + 1]
mov cl, byte [esi + eax]
cmp cl, 1
mov byte [ebp + 0xb], cl
jne 0x405131
movsx ecx, byte [esi + eax + 6]
add esi, 6
lea ecx, [esi + ecx + 0x15]
jmp 0x4051ce
add esi, 4
mov dl, byte [esi + eax]
lea ecx, [esi + eax]
cmp dl, bl
jne 0x405144
mov byte [ebp + 0xb], 1
jmp 0x40516a
movsx eax, dl
push eax
inc ecx
lea eax, [ebp - 0x254]
push ecx
push eax
call fcn.0043fd30
mov eax, dword [ebp - 4]
add esp, 0xc
movsx edx, byte [esi + eax]
lea ecx, [esi + eax]
mov byte [ebp + edx - 0x254], bl
movsx ecx, byte [ecx]
lea esi, [esi + ecx + 1]
mov dl, byte [esi + eax]
lea ecx, [esi + eax]
cmp dl, bl
jne 0x405181
mov byte [ebp + 0xb], 1
jmp 0x4051bf
movsx eax, dl
push eax
inc ecx
lea eax, [ebp - 0xec]
push ecx
push eax
call fcn.0043fd30
mov eax, dword [ebp - 4]
add esp, 0xc
movsx edx, byte [esi + eax]
lea ecx, [esi + eax]
mov byte [ebp + edx - 0xec], bl
xor edx, edx
cmp byte [ecx], bl
jle 0x4051bf
xor byte [ebp + edx - 0xec], 0xc8
inc edx
movsx ebx, byte [ecx]
cmp edx, ebx
jl 0x4051ad
xor ebx, ebx
movsx ecx, byte [ecx]
lea ecx, [esi + ecx + 1]
movsx edx, byte [ecx + eax]
lea ecx, [ecx + edx + 0x15]
movsx edx, byte [ecx + eax]
push edi
lea ecx, [ecx + edx + 1]
movsx edx, byte [ecx + eax]
lea esi, [ecx + edx + 0x16]
add eax, esi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440090
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
add esp, 0xc
add esi, edi
cmp ecx, ebx
jle 0x405205
movsx edx, byte [esi + eax]
dec ecx
lea esi, [esi + edx + 1]
jne 0x4051fa
add eax, esi
push edi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440090
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
add esp, 0xc
add esi, edi
cmp ecx, ebx
jle 0x40522c
movsx edx, byte [esi + eax]
dec ecx
lea esi, [esi + edx + 1]
jne 0x405221
movsx ecx, byte [esi + eax + 0xe]
add esi, 0xe
push edi
lea ecx, [esi + ecx + 5]
movsx edx, byte [ecx + eax]
lea ecx, [ecx + edx + 1]
movsx edx, byte [ecx + eax]
lea esi, [ecx + edx + 0xf]
add eax, esi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440090
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
add esp, 0xc
add esi, edi
cmp ecx, ebx
jle 0x40526f
movsx edx, byte [esi + eax]
dec ecx
lea esi, [esi + edx + 1]
jne 0x405264
add esi, edi
cmp byte [ebp + 0xb], 1
movsx ecx, byte [esi + eax]
lea ecx, [esi + ecx + 5]
movsx edx, byte [ecx + eax]
lea ecx, [ecx + edx + 1]
movsx edx, byte [ecx + eax]
lea esi, [ecx + edx + 0x17]
je 0x405092
lea eax, [ebp - 0xec]
push eax
lea eax, [ebp - 0x254]
push eax
lea eax, [ebp - 0x2b8]
push eax
push 0x44e8d4
call fcn.004052cb
add esp, 0x10
jmp 0x40508f
push dword [ebp - 4]
call fcn.00440428
pop ecx
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret