Function at 0x401150
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x198
mov eax, dword [0x42e3b8]
xor eax, ebp
mov dword [ebp + 0x74], eax
push ebx
push esi
push edi
push 8
pop ecx
mov esi, str.ABCDEFGHIJKLMNPQRSTUVWXYZ123456789
lea edi, [ebp + 0x20]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
xor eax, eax
push 7
pop ecx
mov byte [ebp + 0x44], 0
lea edi, [ebp + 0x45]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
xor eax, eax
mov byte [ebp + 0x64], 0
lea edi, [ebp + 0x65]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x7c
xor edi, edi
lea eax, [ebp - 0xdf]
push edi
push eax
mov byte [ebp - 0xe0], 0
call fcn.00422c20
push 0x7c
lea eax, [ebp - 0x5f]
push edi
push eax
mov byte [ebp - 0x60], 0
call fcn.00422c20
lea eax, [ebp - 0xec]
push eax
call fcn.00401666
lea eax, [ebp - 0x110]
push eax
call fcn.00401666
lea eax, [ebp - 0x11c]
push eax
call fcn.00401666
lea eax, [ebp - 0x104]
push eax
call fcn.00401666
lea eax, [ebp - 0xf8]
push eax
call fcn.00401666
push 0x20
mov esi, 0x42fc20
lea eax, [ebp - 0xec]
push esi
push eax
call fcn.00401fe8
mov ebx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0xe4]
mov eax, dword [eax]
neg ebx
sbb ebx, ebx
push 0x20
and ebx, eax
lea eax, [ebp - 0xec]
push esi
push eax
call fcn.00401fe8
mov eax, dword [ebp - 0xe4]
mov ecx, dword [eax]
mov eax, dword [ebp - 0xe8]
add esp, 0x44
neg eax
sbb eax, eax
and eax, ecx
mov byte [ebp + 0x64], 0x39
mov byte [ebp + 0x65], 0xa
mov byte [ebp + 0x66], 0
mov byte [ebp + 0x67], 0
mov byte [ebp + 0x68], 0
mov ecx, ebx
shr ecx, 8
mov byte [ebp + 0x6c], cl
mov ecx, ebx
shr ecx, 0x10
mov byte [ebp + 0x6d], cl
mov ecx, eax
mov byte [ebp + 0x6f], al
shr eax, 0x10
shr ecx, 8
mov byte [ebp + 0x6b], bl
shr ebx, 0x18
mov byte [ebp + 0x71], al
mov byte [ebp + 0x70], cl
xor al, al
mov byte [ebp + 0x69], 0x4c
mov byte [ebp + 0x6a], 0x42
mov byte [ebp + 0x6e], bl
xor ecx, ecx
movzx edx, byte [ebp + ecx + 0x64]
movzx eax, al
xor edx, eax
mov al, byte [edx + 0x42f040]
inc ecx
cmp ecx, 0xe
jl 0x401291
push 0x42f020
push edi
xor ebx, ebx
inc ebx
push ebx
push ebx
push ebx
mov byte [ebp + 0x72], al
lea eax, [ebp - 0x110]
push 0xf
push eax
call fcn.0040233e
push 0x42f030
push edi
push ebx
push ebx
push ebx
lea eax, [ebp - 0x11c]
push 0xf
push eax
call fcn.0040233e
lea eax, [ebp + 0x64]
push eax
push edi
push ebx
push ebx
push ebx
lea eax, [ebp - 0x104]
push 0xf
push eax
call fcn.0040233e
add esp, 0x54
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x11c]
push eax
lea eax, [ebp - 0x104]
push eax
lea eax, [ebp - 0xf8]
push eax
call fcn.004017c4
lea eax, [ebp - 0xf8]
push eax
push edi
push ebx
push ebx
push ebx
lea eax, [ebp + 0x64]
push edi
push eax
call fcn.00402041
add esp, 0x2c
push 7
pop edx
lea esi, [ebp + 0x64]
mov al, byte [esi]
mov cl, dl
shr al, cl
and al, bl
cmp edi, 5
je 0x401354
cmp edi, 0xb
je 0x401354
cmp edi, 0x11
je 0x401354
cmp edi, 0x17
je 0x401354
cmp edi, 0x1d
jne 0x401355
inc edi
dec edx
mov byte [ebp + edi - 0xe0], al
jns 0x401363
push 7
pop edx
inc esi
inc edi
cmp edi, 0x7d
jl 0x401333
push 0x3e
xor eax, eax
pop ecx
mov dl, byte [ebp + eax - 0xe0]
mov byte [ebp + eax*2 - 0x60], dl
inc eax
cmp eax, ecx
jl 0x40136e
lea eax, [ebp - 0x5f]
mov dl, byte [ebp + ecx - 0xe0]
mov byte [eax], dl
inc ecx
inc eax
inc eax
cmp ecx, 0x7c
jl 0x401381
mov al, byte [ebp - 0x64]
mov byte [ebp + 0x1c], al
xor edi, edi
lea esi, [ebp - 0x60]
push 4
xor bl, bl
pop ecx
mov al, byte [esi]
shl al, cl
or bl, al
inc esi
dec ecx
cmp ecx, 0xffffffff
jg 0x4013a2
mov eax, edi
cdq
push 3
pop ecx
idiv ecx
add dl, bl
movsx eax, dl
mov al, byte [ebp + eax + 0x20]
mov byte [ebp + edi + 0x44], al
inc edi
cmp edi, 0x19
jl 0x40139d
lea eax, [ebp + 0x44]
xor ecx, ecx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4013d2
sub eax, esi
je 0x401411
mov edi, 0x42fc3c
mov eax, ecx
push 5
cdq
pop esi
idiv esi
test edx, edx
jne 0x4013f6
test ecx, ecx
je 0x4013f6
mov byte [edi], 0x2d
inc edi
mov al, byte [ebp + ecx + 0x44]
mov byte [edi], al
lea eax, [ebp + 0x44]
inc ecx
inc edi
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x401404
sub eax, esi
cmp ecx, eax
jb 0x4013e2
lea eax, [ebp - 0xec]
push eax
call fcn.004016af
lea eax, [ebp - 0x110]
push eax
call fcn.004016af
lea eax, [ebp - 0x11c]
push eax
call fcn.004016af
lea eax, [ebp - 0x104]
push eax
call fcn.004016af
lea eax, [ebp - 0xf8]
push eax
call fcn.004016af
mov ecx, dword [ebp + 0x74]
add esp, 0x14
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004209fc
add ebp, 0x78
leave
ret