Function at 0x1003555a
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1005fa66
call fcn.1005e208
sub esp, 0x60
mov byte [ebp - 0x18], dl
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
test dl, dl
je 0x1003565c
mov dword [ebp - 0x38], 0xc4d8e5cc
xor ebx, ebx
mov dword [ebp - 0x38], 0x5f394a2a
xor esi, esi
mov dword [ebp - 0x34], 0xfffffffb
inc esi
mov dword [ebp - 0x38], 0xa3a11c15
mov dword [ebp - 0x24], 0x4ad72d76
mov dword [ebp - 0x30], 0xd1ad67a4
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x1c], 0x98e64e6d
mov dword [ebp - 0x1c], ebx
jmp 0x100355c4
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x28], 0xfffffffd
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], esi
jl 0x100355b6
mov dword [ebp - 0x1c], ebx
jmp 0x100355d8
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x20], esi
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], esi
jl 0x100355ce
mov eax, dword [ebp - 0x20]
inc dword [ebp - 0x20]
test eax, eax
je 0x10035646
cmp dword [ebp - 0x20], ebx
je 0x100355fa
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x28], 0xbf199314
mov eax, esi
jae 0x100355fc
mov eax, ebx
mov ecx, dword [ebp - 0x24]
imul ecx, eax
sub ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
neg ecx
sbb ecx, ecx
add eax, 0x9c089ced
inc ecx
xor edx, edx
add ecx, eax
mov eax, dword [ebp - 0x24]
cmp ecx, eax
mov eax, dword [ebp - 0x20]
setge dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x34]
setge cl
sub ecx, eax
mov eax, dword [ebp - 0x20]
add ecx, eax
mov eax, dword [ebp - 0x20]
add eax, ecx
mov ecx, dword [ebp - 0x38]
sub ecx, eax
neg ecx
sbb ecx, ecx
inc ecx
mov dword [ebp - 0x28], ecx
jne 0x10035648
mov esi, ebx
mov dword [ebp - 0x1c], esi
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x38], 0x1ea1
cmp dword [ebp - 0x38], 0x122e
jge 0x10035747
call fcn.10047dda
push eax
push 0x1006cce4
push str.in.txt
call fcn.10047f89
add esp, 0xc
call fcn.10047dda
add eax, 0x20
push eax
push 0x1006ccf0
push str.out.txt
call fcn.10047f89
add esp, 0xc
mov dword [ebp - 0x3c], 0xf
xor ebx, ebx
mov dword [ebp - 0x40], ebx
mov byte [ebp - 0x50], bl
mov dword [ebp - 4], ebx
mov edi, 0x1007d7b0
jmp 0x10035708
mov edx, ebx
mov esi, ebx
cmp dword [ebp - 0x40], edx
jbe 0x100356f6
cmp dword [ebp - 0x3c], 0x10
lea eax, [ebp - 0x50]
cmovae eax, dword [ebp - 0x50]
cmp byte [eax + edx], 0x20
je 0x100356f0
cmp dword [ebp - 0x3c], 0x10
lea eax, [ebp - 0x50]
cmovae eax, dword [ebp - 0x50]
movsx ecx, byte [eax + edx]
lea eax, [edx + 1]
sub ecx, 0x40
imul ecx, eax
add esi, ecx
inc edx
cmp edx, dword [ebp - 0x40]
jb 0x100356c5
push esi
mov ecx, 0x1007d6f8
call fcn.100061cf
push eax
call fcn.1000abfe
pop ecx
mov eax, dword [0x1007d7b0]
push 0xa
mov ecx, dword [eax + 4]
add ecx, edi
call fcn.10008950
movzx eax, al
lea edx, [ebp - 0x50]
push eax
mov ecx, edi
call fcn.1003d688
pop ecx
lea ecx, [ebp - 0x50]
call fcn.1003d533
test al, al
je 0x100356bc
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x50]
xor esi, esi
push ebx
inc esi
push esi
call fcn.10006e56
jmp 0x1003574c
xor esi, esi
xor ebx, ebx
inc esi
mov dword [ebp - 0x1c], 0x7706
cmp dword [ebp - 0x1c], 0x7acb
jle 0x100357a5
mov edi, ebx
mov ecx, ebx
mov dword [ebp - 0x24], ebx
mov eax, edi
shl eax, cl
lea ecx, [ebp - 0x68]
cdq
push edx
push eax
call fcn.10001a99
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1003577c
mov eax, dword [eax]
push eax
call fcn.100460fd
pop ecx
push ebx
push esi
lea ecx, [ebp - 0x68]
call fcn.10006e56
mov ecx, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, 0x59a5
jl 0x10035763
inc edi
cmp edi, 0x5e4d
jl 0x1003575e
cmp dword [ebp - 0x1c], 0x73c8
jge 0x100357b9
push str.sxhzohdqy_gdx_owksacq_lob_odspkjdp_ahsg
call fcn.100460fd
pop ecx
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x1c], 0x7561
cmp dword [ebp - 0x1c], 0x77c6
jle 0x10035815
mov esi, ebx
mov dword [ebp - 0x24], ebx
mov edi, ebx
mov dword [ebp - 0x38], ebx
mov ecx, edi
mov ebx, esi
mov esi, dword [ebp - 0x38]
shl ebx, cl
mov eax, ebx
mov ecx, 0x1007d6f8
xor eax, esi
cdq
push edx
push eax
call fcn.100062e1
inc esi
cmp esi, 0x790f
jl 0x100357e0
mov esi, dword [ebp - 0x24]
inc edi
push 0
pop ebx
cmp edi, 0x5ad4
jl 0x100357d4
inc esi
mov dword [ebp - 0x24], esi
cmp esi, 0x1087
jl 0x100357d2
mov edx, dword [ebp + 0x10]
mov dword [edx], ebx
cmp dword [edx], 2
jge 0x10035830
mov esi, dword [ebp + 8]
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], ebx
inc dword [edx]
cmp dword [edx], 2
jl 0x10035822
mov dword [ebp - 4], 3
cmp dword [ebp - 0x1c], 0x71a5
jge 0x1003564b
mov edx, str.vnpnf_pqwjwdp_lfkyky_vwuxolaud_sdjycviu_uqfrxm_rjoq_jcqh
mov ecx, 0x1007d6f8
call fcn.1000aa27
jmp 0x1003564b