Function at 0x4020b8
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4a8
push ebx
push esi
push edi
xor eax, eax
lea edi, [ebp - 0x3c]
mov dword [ebp - 0x7c], 0xf3
mov dword [ebp - 0x78], 0x26
mov dword [ebp - 0x74], 0x81
mov dword [ebp - 0x70], 0xc4
mov dword [ebp - 0x6c], 0x39
mov dword [ebp - 0x68], 0x86
mov dword [ebp - 0x64], 0xdb
mov dword [ebp - 0x60], 0x92
mov dword [ebp - 0x5c], 0x71
mov dword [ebp - 0x58], 0xa3
mov dword [ebp - 0x54], 0xb9
mov dword [ebp - 0x50], 0xe6
mov dword [ebp - 0x4c], 0x53
mov dword [ebp - 0x48], 0x7a
mov dword [ebp - 0x44], 0x95
mov dword [ebp - 0x40], 0x7c
mov esi, 0x40625c
stosd dword es:[edi], eax
lea edi, [ebp - 0xc]
push 0x12
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x406260
lea edi, [ebp - 0x14]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x406268
lea edi, [ebp - 0x38]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x406274
lea edi, [ebp - 0x20]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, 0x406280
lea edi, [ebp - 0x2c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, 0x40628c
lea edi, [ebp - 0x88]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop ecx
mov esi, 0x406298
lea edi, [ebp - 0x2a0]
push 0x10
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop ecx
mov esi, 0x4062e4
lea edi, [ebp - 0x210]
push 0x10
rep movsd dword es:[edi], dword [esi]
pop ecx
mov esi, 0x406324
lea edi, [ebp - 0x254]
push 6
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop ecx
mov esi, 0x406368
lea edi, [ebp - 0xa4]
lea eax, [ebp - 0x14]
rep movsd dword es:[edi], dword [esi]
xor ebx, ebx
push eax
mov dword [ebp - 4], ebx
movsb byte es:[edi], byte [esi]
call fcn.00401675
lea eax, [ebp - 0x38]
push eax
call fcn.00401675
lea eax, [ebp - 0x20]
push eax
call fcn.00401675
lea eax, [ebp - 0x2c]
push eax
call fcn.00401675
lea eax, [ebp - 0x88]
push eax
call fcn.00401675
lea eax, [ebp - 0x2a0]
push eax
call fcn.00401675
lea eax, [ebp - 0x210]
push eax
call fcn.00401675
lea eax, [ebp - 0x254]
push eax
call fcn.00401675
lea eax, [ebp - 0xa4]
push eax
call fcn.00401675
push dword [ebp + 8]
lea eax, [ebp - 0x4a8]
push eax
call sub.MSVCRT.dll_strcpy
lea eax, [ebp - 0xa4]
push eax
lea eax, [ebp - 0x4a8]
push eax
call sub.MSVCRT.dll_strcat
add esp, 0x34
mov dword [ebp + 8], ebx
cmp dword [ebp + 8], ebx
jne 0x402273
lea eax, [ebp - 0x4a8]
push eax
lea eax, [ebp - 0x3a4]
push eax
call sub.MSVCRT.dll_strcpy
lea eax, [ebp - 0x20]
jmp 0x4022b0
cmp dword [ebp + 8], 1
jne 0x402291
lea eax, [ebp - 0x4a8]
push eax
lea eax, [ebp - 0x3a4]
push eax
call sub.MSVCRT.dll_strcpy
lea eax, [ebp - 0x2c]
jmp 0x4022b0
cmp dword [ebp + 8], 2
jne 0x4022c0
lea eax, [ebp - 0x4a8]
push eax
lea eax, [ebp - 0x3a4]
push eax
call sub.MSVCRT.dll_strcpy
lea eax, [ebp - 0x88]
push eax
lea eax, [ebp - 0x3a4]
push eax
call sub.MSVCRT.dll_strcat
add esp, 0x10
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x3a4]
push eax
call fcn.0040138a
add esp, 0xc
test eax, eax
je 0x402451
lea eax, [ebp - 0x14]
push ebx
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call fcn.00401526
mov esi, eax
add esp, 0x10
cmp esi, ebx
je 0x402448
add esi, 5
lea eax, [ebp - 0xc]
push esi
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call fcn.00401526
mov edi, eax
sub eax, esi
push eax
mov eax, dword [ebp - 4]
add eax, esi
push eax
lea eax, [ebp - 0x1d0]
push eax
call sub.MSVCRT.dll_strncpy
lea eax, [ebp - 0x1d0]
push ebx
sub eax, esi
and byte [eax + edi], 0
lea eax, [ebp - 0x38]
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call fcn.00401526
mov esi, eax
add esp, 0x2c
cmp esi, ebx
je 0x402448
add esi, 9
lea eax, [ebp - 0xc]
push esi
push eax
push dword [ebp - 8]
push dword [ebp - 4]
call fcn.00401526
mov edi, eax
sub eax, esi
push eax
mov eax, dword [ebp - 4]
add eax, esi
push eax
lea eax, [ebp - 0x108]
push eax
call sub.MSVCRT.dll_strncpy
lea eax, [ebp - 0x108]
sub eax, esi
and byte [eax + edi], 0
lea eax, [ebp - 0x108]
push eax
xor edi, edi
call sub.MSVCRT.dll_strlen
add esp, 0x20
test eax, 0xfffffffe
jbe 0x4023db
lea esi, [ebp - 0x16c]
lea ebx, [ebp - 0x108]
push esi
push 0x406384
push ebx
call sub.MSVCRT.dll_sscanf
mov eax, edi
and eax, 0xf
mov al, byte [ebp + eax*4 - 0x7c]
xor byte [esi], al
inc edi
inc ebx
lea eax, [ebp - 0x108]
inc ebx
push eax
inc esi
call sub.MSVCRT.dll_strlen
shr eax, 1
add esp, 0x10
cmp edi, eax
jb 0x4023a9
xor ebx, ebx
and byte [ebp + edi - 0x16c], 0
cmp dword [ebp + 8], ebx
jne 0x402402
lea eax, [ebp - 0x16c]
push eax
lea eax, [ebp - 0x1d0]
push eax
push 0x406b90
push 0x40638c
jmp 0x402440
cmp dword [ebp + 8], 1
jne 0x402422
lea eax, [ebp - 0x16c]
push eax
lea eax, [ebp - 0x1d0]
push eax
push 0x406b94
push 0x406390
jmp 0x402440
cmp dword [ebp + 8], 2
jne 0x402448
lea eax, [ebp - 0x16c]
push eax
lea eax, [ebp - 0x1d0]
push eax
push 0x406b98
push 0x406394
call fcn.00403f7c
add esp, 0x10
push dword [ebp - 4]
call sub.MSVCRT.dll_free
pop ecx
inc dword [ebp + 8]
cmp dword [ebp + 8], 3
jb 0x402256
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret