Function at 0x4055dc
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, 0x44fb44
lea edi, [ebp - 0x38]
push 9
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
pop ecx
mov esi, 0x44fb1c
lea edi, [ebp - 0x60]
push 9
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop ecx
mov esi, 0x44faf4
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.00401fe8
lea eax, [ebp - 0x60]
push eax
call fcn.00401fe8
lea eax, [ebp - 0x88]
push eax
call fcn.00401fe8
push dword [ebp + 8]
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043feb0
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043fec0
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.00401e27
add esp, 0x28
test eax, eax
jne 0x4056ef
push dword [ebp + 8]
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043feb0
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043fec0
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.00401e27
add esp, 0x1c
test eax, eax
jne 0x4056ef
push dword [ebp + 8]
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043feb0
lea eax, [ebp - 0x88]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.0043fec0
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x1f0]
push eax
call fcn.00401e27
add esp, 0x1c
test eax, eax
je 0x405968
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.00440750
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.00440750
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.00440750
add esi, 8
add esp, 0xc
cmp esi, dword [ebp - 0xc]
jae 0x40595c
mov eax, dword [ebp - 4]
cmp dword [ebp - 0x10], ebx
movsx ecx, byte [esi + eax]
je 0x40577d
lea esi, [esi + ecx + 0xf]
push edi
add eax, esi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440750
mov eax, dword [ebp - 8]
add esp, 0xc
lea esi, [esi + eax*4 + 4]
jmp 0x405731
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.004403f0
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 0x4057d3
movsx ecx, byte [esi + eax + 6]
add esi, 6
lea ecx, [esi + ecx + 0x15]
jmp 0x405870
add esi, 4
mov dl, byte [esi + eax]
lea ecx, [esi + eax]
cmp dl, bl
jne 0x4057e6
mov byte [ebp + 0xb], 1
jmp 0x40580c
movsx eax, dl
push eax
inc ecx
lea eax, [ebp - 0x254]
push ecx
push eax
call fcn.004403f0
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 0x405823
mov byte [ebp + 0xb], 1
jmp 0x405861
movsx eax, dl
push eax
inc ecx
lea eax, [ebp - 0xec]
push ecx
push eax
call fcn.004403f0
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 0x405861
xor byte [ebp + edx - 0xec], 0xc8
inc edx
movsx ebx, byte [ecx]
cmp edx, ebx
jl 0x40584f
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.00440750
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
add esp, 0xc
add esi, edi
cmp ecx, ebx
jle 0x4058a7
movsx edx, byte [esi + eax]
dec ecx
lea esi, [esi + edx + 1]
jne 0x40589c
add eax, esi
push edi
push eax
lea eax, [ebp - 8]
push eax
call fcn.00440750
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
add esp, 0xc
add esi, edi
cmp ecx, ebx
jle 0x4058ce
movsx edx, byte [esi + eax]
dec ecx
lea esi, [esi + edx + 1]
jne 0x4058c3
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.00440750
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 4]
add esp, 0xc
add esi, edi
cmp ecx, ebx
jle 0x405911
movsx edx, byte [esi + eax]
dec ecx
lea esi, [esi + edx + 1]
jne 0x405906
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 0x405734
lea eax, [ebp - 0xec]
push eax
lea eax, [ebp - 0x254]
push eax
lea eax, [ebp - 0x2b8]
push eax
push 0x44faf0
call fcn.0040596d
add esp, 0x10
jmp 0x405731
push dword [ebp - 4]
call fcn.00440ae8
pop ecx
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret