Function at 0x402f80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x114
mov eax, dword [0x44e004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0xcc
push 0
push dword [ebp + 8]
mov edi, ecx
call fcn.0042a720
mov edx, edi
add esp, 0xc
lea ecx, [edx + 1]
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x402fb0
sub edx, ecx
cmp edx, 0x118
ja 0x403253
xor esi, esi
xor ebx, ebx
test edx, edx
je 0x403082
mov cl, byte [esi + edi]
cmp cl, 0x3d
je 0x403082
lea eax, [ecx - 0x2b]
cmp al, 0x4f
ja case.default.0x403005
movsx eax, cl
mov cl, byte [eax + 0x449715]
movsx eax, cl
mov dword [ebp - 8], eax
cmp eax, 0xffffffff
je case.default.0x403005
mov eax, esi
and eax, 3
jmp dword [eax*4 + 0x403268]
shl cl, 2
mov byte [ebp + ebx - 0xe4], cl
jmp 0x403074
mov eax, dword [ebp - 8]
shr eax, 4
and al, 3
add byte [ebp + ebx - 0xe4], al
lea eax, [edx - 3]
inc ebx
cmp esi, eax
jb 0x403036
cmp byte [edx + edi - 2], 0x3d
je 0x403074
shl cl, 4
mov byte [ebp + ebx - 0xe4], cl
jmp 0x403074
mov eax, dword [ebp - 8]
shr eax, 2
and al, 0xf
add byte [ebp + ebx - 0xe4], al
lea eax, [edx - 2]
inc ebx
cmp esi, eax
jb 0x403060
cmp byte [edx + edi - 1], 0x3d
je 0x403074
shl cl, 6
mov byte [ebp + ebx - 0xe4], cl
jmp 0x403074
add byte [ebp + ebx - 0xe4], cl
inc ebx
inc esi
cmp esi, edx
jb 0x402fd1
jmp 0x403082
or ebx, 0xffffffff
cmp bl, 0x10
jb 0x403253
mov esi, 5
mov cl, 5
mov edi, esi
mov eax, esi
xor edx, edx
div edi
mov al, byte [ebp + edx - 0xe4]
xor al, byte [ebp + esi - 0xe4]
xor al, cl
inc cl
mov byte [ebp + esi - 0xe4], al
inc esi
cmp cl, bl
jb 0x403094
push 0x7d0
sub bl, 5
call fcn.0042ff7c
mov esi, eax
add esp, 4
test esi, esi
je 0x4030f8
lea eax, [esi + 0x7d0]
mov dword [ebp - 0x10], str._____________________
xor edx, edx
mov dword [ebp - 0xc], esi
lea ecx, [ebp - 0x10]
mov dword [ebp - 8], eax
call fcn.00404d70
test eax, eax
jne 0x4030fa
push esi
call fcn.0042f371
add esp, 4
xor esi, esi
mov ecx, esi
call fcn.00404a80
push esi
mov edi, eax
call fcn.0042f371
imul eax, dword [edi], 0xb0
push eax
call fcn.0042ff7c
add esp, 8
mov dword [ebp - 8], eax
test eax, eax
je 0x403234
push eax
push 0xc
lea eax, [ebp - 0x114]
mov ecx, edi
push eax
movzx eax, bl
lea edx, [ebp - 0xdf]
push eax
call fcn.00405430
push dword [ebp - 8]
mov esi, eax
call fcn.0042f371
mov ebx, dword [ebp + 8]
add esp, 0x14
test esi, esi
jle 0x403237
mov eax, dword [ebp - 0x10c]
mov esi, 0x58
mov ecx, dword [ebp - 0x108]
sub ecx, eax
cmp ecx, esi
cmovg ecx, esi
push ecx
push eax
push ebx
call fcn.0042b1a0
mov ecx, dword [ebp - 0x100]
xor eax, eax
mov dword [ebp - 0xc], eax
mov edx, 5
mov word [ebp - 8], ax
mov eax, dword [ebp - 0x104]
sub ecx, eax
cmp ecx, 5
cmovg ecx, edx
push ecx
push eax
lea eax, [ebp - 0xc]
push eax
call fcn.0042b1a0
lea eax, [ebp - 0xc]
push eax
call fcn.0042ff3d
mov ecx, dword [ebp - 0xf8]
mov word [ebx + 0x5a], ax
mov eax, dword [ebp - 0xfc]
sub ecx, eax
cmp ecx, esi
cmovg ecx, esi
push ecx
push eax
lea eax, [ebx + 0x5c]
push eax
call fcn.0042b1a0
mov eax, dword [ebp - 0xf4]
mov esi, 0xa
mov ecx, dword [ebp - 0xf0]
sub ecx, eax
cmp ecx, esi
cmovg ecx, esi
push ecx
push eax
lea eax, [ebx + 0xb5]
push eax
call fcn.0042b1a0
mov eax, dword [ebp - 0xec]
mov ecx, dword [ebp - 0xe8]
sub ecx, eax
cmp ecx, esi
cmovg ecx, esi
push ecx
push eax
lea ecx, [ebx + 0xc0]
push ecx
call fcn.0042b1a0
add esp, 0x40
push edi
call fcn.0042f371
add esp, 4
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00429577
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 8]
push edi
call fcn.0042f371
add esp, 4
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00429577
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
mov eax, dword [ebp + 8]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.00429577
mov esp, ebp
pop ebp
ret