Function at 0x4147d3
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x608
mov eax, dword [ebp + 0x14]
and dword [ebp - 8], 0
test eax, eax
je 0x4147fb
lea edx, [ebp - 0x208]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x4147ef
jmp 0x414802
mov byte [ebp - 0x208], 0
push ebx
mov ebx, dword [ebp + 0xc]
xor ebx, dword [ebp + 0x18]
cmp dword [ebp + 8], 0x14
push esi
push edi
mov dword [ebp + 0xc], ebx
jl 0x41486e
cmp byte [ebp - 0x208], 0
jne 0x414860
mov eax, 0x4060cc
mov dword [ebp - 8], 1
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x41482c
sub eax, ecx
push 5
mov ebx, eax
mov byte [ebp - 0x208], 0x32
lea esi, [ebp - 0x207]
pop edi
push ebx
call fcn.0041159b
mov al, byte [eax + 0x4060cc]
mov byte [esi], al
inc esi
dec edi
pop ecx
jne 0x414847
mov ebx, dword [ebp + 0xc]
mov byte [esi], 0
mov ecx, dword [ebp + 0x2c]
xor eax, eax
cmp cx, ax
je 0x414881
push 5
jmp 0x41489d
cmp byte [ebp - 0x208], 0
jne 0x414860
mov eax, 0x4060c4
jmp 0x414c75
cmp word [ebp + 0x28], ax
je 0x41488b
push 4
jmp 0x41489d
cmp word [ebp + 0x24], ax
je 0x414895
push 3
jmp 0x41489d
cmp word [ebp + 0x20], ax
je 0x4148a0
push 2
pop eax
jmp 0x4148a9
xor eax, eax
cmp word [ebp + 0x1c], ax
setne al
cmp eax, 5
lea esi, [ebp - 0x408]
jl 0x4148cb
mov edx, ecx
shr edx, 8
mov byte [ebp - 0x408], dl
mov byte [ebp - 0x407], cl
lea esi, [ebp - 0x406]
cmp eax, 4
jl 0x4148e0
mov ecx, dword [ebp + 0x28]
mov edx, ecx
shr edx, 8
mov byte [esi], dl
mov byte [esi + 1], cl
add esi, 2
cmp eax, 3
jl 0x4148f5
mov ecx, dword [ebp + 0x24]
mov edx, ecx
shr edx, 8
mov byte [esi], dl
mov byte [esi + 1], cl
add esi, 2
cmp eax, 2
jl 0x41490a
mov ecx, dword [ebp + 0x20]
mov edx, ecx
shr edx, 8
mov byte [esi], dl
mov byte [esi + 1], cl
add esi, 2
cmp eax, 1
jl 0x41491f
mov eax, dword [ebp + 0x1c]
mov ecx, eax
shr ecx, 8
mov byte [esi], cl
mov byte [esi + 1], al
add esi, 2
call fcn.0041152a
movzx eax, ax
mov ecx, eax
shr ecx, 8
mov byte [esi], cl
mov byte [esi + 1], al
mov ecx, ebx
shr ecx, 0x18
lea eax, [esi + 2]
mov byte [eax], cl
inc eax
mov ecx, ebx
shr ecx, 0x10
mov byte [eax], cl
mov ecx, ebx
inc eax
shr ecx, 8
mov byte [eax], cl
inc eax
mov byte [eax], bl
mov ebx, dword [ebp + 0x30]
lea esi, [eax + 1]
test ebx, ebx
je 0x414985
cmp byte [ebx], 0
je 0x414985
push 0
push ebx
call dword [0x411e9c]
pop ecx
pop ecx
jmp 0x41496f
mov cl, byte [eax]
mov byte [esi], cl
inc esi
dec eax
cmp eax, ebx
jae 0x41496a
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x414979
sub eax, edx
mov byte [esi], al
inc esi
lea eax, [ebp - 0x408]
sub esi, eax
lea eax, [ebp - 0x208]
push eax
lea eax, [ebp - 0x608]
push eax
mov dword [ebp + 0x14], esi
call fcn.004114da
pop ecx
lea eax, [ebp - 0x608]
pop ecx
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4149ae
sub eax, ecx
push 0xffffffffffffffff
push eax
lea eax, [ebp - 0x608]
push eax
call fcn.00410ca5
xor esi, esi
add esp, 0xc
cmp dword [ebp + 0x14], esi
mov dword [0x412fc4], eax
jle 0x4149ed
push 0x100
call fcn.0041159b
xor byte [ebp + esi - 0x408], al
inc esi
cmp esi, dword [ebp + 0x14]
pop ecx
jl 0x4149d5
lea eax, [ebp - 0x208]
push eax
push dword [ebp + 0x10]
lea eax, [ebp + 0x14]
push eax
lea eax, [ebp - 0x408]
push eax
mov eax, dword [ebp + 8]
call fcn.00414211
add esp, 0x10
test eax, eax
je 0x414c5c
cmp dword [ebp + 8], 0x14
mov byte [0x412fd8], 0
jl 0x414c03
call fcn.00411b01
mov edi, eax
mov dword [ebp + 0x18], edi
call fcn.00411b01
mov dword [ebp - 4], eax
call fcn.00411b01
cmp dword [ebp + 8], 0x1d
mov dword [ebp + 0xc], eax
jne 0x414a50
push 1
push edi
call fcn.00412c5a
pop ecx
pop ecx
xor esi, esi
cmp dword [ebp + 0x14], esi
jle 0x414a88
push dword [ebp - 4]
push 8
push edi
call fcn.00411d59
movzx eax, byte [ebp + esi - 0x408]
push eax
push dword [ebp + 0xc]
call fcn.00411b63
push edi
push dword [ebp + 0xc]
push dword [ebp - 4]
call fcn.00412cbe
add esp, 0x20
inc esi
cmp esi, dword [ebp + 0x14]
jl 0x414a57
push 6
pop ebx
mov esi, 0x412fd8
call fcn.00411bb7
push 0
push eax
push edi
jmp 0x414b3f
push 0x20
push dword [ebp + 0xc]
call fcn.00411b63
push dword [ebp - 4]
push dword [ebp + 0xc]
push dword [ebp + 0x18]
call fcn.0041305f
push dword [ebp - 4]
call fcn.00412c7f
push dword [ebp + 0xc]
mov edi, eax
push 0xfffffffffffffffb
push dword [ebp + 0x18]
call fcn.00411d59
push dword [ebp + 0xc]
push dword [ebp + 0x18]
call fcn.00411b36
add esp, 0x2c
cmp dword [ebp + 8], 0x1d
je 0x414b21
call fcn.00411bb7
push 0
push eax
push dword [ebp + 0x18]
call fcn.004119e2
add esp, 0xc
test eax, eax
jne 0x414b21
cmp edi, 0x10
jge 0x414b07
mov al, byte [edi + 0x4060dc]
mov byte [esi], al
jmp 0x414b1d
mov al, byte [edi + 0x4060cc]
mov byte [esi], al
inc esi
dec ebx
jne 0x414b1a
push 6
mov byte [esi], 0x2d
pop ebx
inc esi
mov byte [esi], 0x47
inc esi
dec ebx
jmp 0x414b34
mov al, byte [edi + 0x4060cc]
mov byte [esi], al
inc esi
dec ebx
jne 0x414b34
push 6
mov byte [esi], 0x2d
inc esi
pop ebx
call fcn.00411bb7
push 0
push eax
push dword [ebp + 0x18]
call fcn.004119e2
add esp, 0xc
test eax, eax
jne 0x414a9e
cmp dword [ebp + 8], 0x1d
jne 0x414b65
test ebx, ebx
jne 0x414b60
push 6
mov byte [esi], 0x2d
pop ebx
inc esi
mov byte [esi], 0x31
inc esi
dec ebx
mov eax, dword [ebp + 0x30]
test eax, eax
je 0x414b81
cmp byte [eax], 0
je 0x414b81
test ebx, ebx
jne 0x414b7c
push 6
mov byte [esi], 0x2d
pop ebx
inc esi
mov byte [esi], 0x33
inc esi
dec ebx
cmp dword [ebp - 8], 0
je 0x414bc7
test ebx, ebx
jne 0x414b92
push 6
mov byte [esi], 0x2d
pop ebx
inc esi
lea eax, [ebp - 0x208]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x414b9b
sub eax, edx
lea eax, [ebp + eax - 0x209]
jmp 0x414bbd
mov cl, byte [eax]
mov byte [esi], cl
inc esi
dec eax
dec ebx
jne 0x414bbd
push 6
mov byte [esi], 0x2d
pop ebx
inc esi
lea ecx, [ebp - 0x208]
cmp eax, ecx
jae 0x414bad
test ebx, ebx
je 0x414bd9
push ebx
push 0x30
push esi
call fcn.00414d98
add esp, 0xc
add esi, ebx
mov eax, 0x412fd8
mov byte [esi], 0
call fcn.004129fa
push dword [ebp + 0xc]
call fcn.00411b18
push dword [ebp - 4]
call fcn.00411b18
push dword [ebp + 0x18]
call fcn.00411b18
add esp, 0xc
jmp 0x414c70
xor ebx, ebx
cmp dword [ebp + 0x14], ebx
jle 0x414c70
test ebx, ebx
jle 0x414c23
mov edi, 0x412fd8
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x414c14
mov esi, 0x4060c0
movsw word es:[edi], word [esi]
movzx eax, byte [ebp + ebx - 0x407]
push eax
movzx eax, byte [ebp + ebx - 0x408]
push eax
push 0x4060b4
push 0
push 0x412fd8
call dword [0x411e9c]
pop ecx
pop ecx
push eax
call dword [fcn.00411e98]
add esp, 0x10
inc ebx
inc ebx
cmp ebx, dword [ebp + 0x14]
jl 0x414c0a
jmp 0x414c70
mov eax, dword [0x4060ac]
mov dword [0x412fd8], eax
mov eax, dword [0x4060b0]
mov dword [0x412fdc], eax
mov eax, 0x412fd8
pop edi
pop esi
pop ebx
leave
ret