Function at 0x100356c9
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1006054f
call fcn.1005ebe8
sub esp, 0x58
push ebx
push esi
mov dword [ebp - 0x30], 0x54d8
xor ebx, ebx
cmp dword [ebp - 0x30], 0x57b6
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x34], edx
jle 0x10035768
mov dword [ebp - 0x20], ebx
mov esi, ebx
mov dword [ebp - 0x2c], ebx
mov edi, ebx
mov ecx, esi
mov dword [ebp - 0x28], 0x52cc
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x24], ecx
mov eax, esi
shl eax, cl
lea ecx, [ebp - 0x64]
cdq
push edx
push eax
call fcn.10001a75
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10035723
mov eax, dword [eax]
push eax
call fcn.10046d04
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x64]
call fcn.1000205c
mov ecx, dword [ebp - 0x24]
add ecx, edi
dec dword [ebp - 0x28]
mov dword [ebp - 0x24], ecx
jne 0x1003570a
mov esi, dword [ebp - 0x2c]
dec edi
cmp edi, 0xfffff20b
jg 0x100356fb
inc esi
mov dword [ebp - 0x2c], esi
cmp esi, 0x4f0
jl 0x100356f9
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x35b0
jl 0x100356f4
cmp dword [ebp - 0x30], 0x5169
jge 0x1003577c
push str.kqhnayo_tgrx_swxuch_xlja_sqkocjwxc
call fcn.10046d04
pop ecx
or dword [ebp - 4], 0xffffffff
cmp byte [ebp + 0x34], 0
je 0x100357ca
mov edx, dword [ebp + 0x24]
mov eax, dword [edx]
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
mov eax, dword [edx]
xor edx, edx
cmp eax, ecx
mov eax, dword [ebp + 0x10]
sete dl
mov eax, dword [eax]
mov dword [eax], edx
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [eax], 0x773196e8
mov eax, dword [ebp + 0x28]
mov dword [eax], 0x199314e7
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 - 0x2c], 0x7da6
cmp dword [ebp - 0x2c], 0x8059
jle 0x10035817
mov esi, ebx
mov edi, ebx
mov eax, edi
mov ecx, 0x1007ad38
xor eax, esi
cdq
push edx
push eax
call fcn.10001b82
inc edi
cmp edi, 0x1123
jl 0x100357de
inc esi
cmp esi, 0x3356
jl 0x100357dc
push ebx
push 0x1f5c
push 0x24fd
push 0x1788
call dword [sym.imp.GDI32.dll_SetDIBColorTable]
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x38]
mov esi, dword [ebp + 0x3c]
inc dword [ecx]
mov eax, dword [edx]
cmp dword [eax], ebx
je 0x10035866
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [ecx]
mov ecx, 0xfffa
mov eax, dword [edx]
cmp ecx, dword [eax]
sbb eax, eax
xor ecx, ecx
inc eax
cmp eax, 0x5ef11ea
mov eax, dword [ebp - 0x34]
setl cl
xor edx, edx
mov eax, dword [eax]
cmp dword [eax], ecx
mov eax, dword [esi]
setl dl
xor ecx, ecx
cmp edx, dword [eax]
mov edx, dword [ebp + 0x30]
mov eax, dword [ebp + 0x2c]
setle cl
mov dword [edx], ecx
mov eax, dword [eax]
mov eax, dword [edx]
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov eax, dword [eax]
cmp dword [eax + 4], 0x8e99
mov eax, dword [esi]
setge cl
mov dword [ebp - 4], 2
mov dword [eax], ecx
mov dword [ebp - 0x34], 0x1a2f
cmp dword [ebp - 0x34], 0x1024
jge 0x10035a6d
mov dword [ebp - 0x38], 0xf
mov dword [ebp - 0x3c], ebx
mov byte [ebp - 0x4c], bl
lea edx, [ebp - 0x4c]
mov byte [ebp - 4], 3
mov ecx, 0x1007ae58
call fcn.10016a22
push 1
push ebx
lea eax, [ebp - 0x18]
mov byte [ebp - 0x18], 0x2b
push eax
lea ecx, [ebp - 0x4c]
call fcn.1001fdc3
push 1
mov dword [ebp - 0x20], eax
lea ecx, [ebp - 0x4c]
push ebx
lea eax, [ebp - 0x1c]
mov byte [ebp - 0x1c], 0x3d
push eax
call fcn.1001fdc3
mov edx, dword [ebp - 0x20]
mov edi, eax
mov esi, dword [ebp - 0x3c]
sub edi, edx
dec edi
sub esi, edi
sub esi, edx
sub esi, 2
lea eax, [edi + edx]
cmp eax, esi
jne 0x10035903
lea edx, [ebp - 0x4c]
call fcn.1003923f
jmp 0x10035a57
lea ecx, [eax + 1]
lea eax, [esi - 1]
cmp ecx, eax
jne 0x10035970
mov ecx, ebx
mov dword [ebp - 0x30], ebx
lea eax, [edx + 1]
cmp ecx, eax
jge 0x1003592c
mov dl, 0x7c
call fcn.100393ef
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x20]
inc ecx
mov dword [ebp - 0x30], ecx
jmp 0x10035912
mov dl, 0x2b
call fcn.100393ef
mov eax, ebx
mov dword [ebp - 0x30], ebx
cmp eax, edi
jge 0x1003594c
mov dl, 0x7c
call fcn.100393ef
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x30], eax
jmp 0x10035938
mov dl, 0x3d
call fcn.100393ef
mov edi, ebx
lea eax, [esi - 1]
cmp edi, eax
jge 0x10035966
mov dl, 0x7c
call fcn.100393ef
inc edi
jmp 0x10035955
push 0x1007ad38
jmp 0x10035a58
cmp edx, 1
jle 0x100359da
lea ecx, [edx - 1]
add ecx, edi
lea eax, [esi + 1]
cmp ecx, eax
jne 0x100359da
mov ecx, ebx
mov dword [ebp - 0x30], ebx
lea eax, [edx - 1]
cmp ecx, eax
jge 0x100359a0
mov dl, 0x7c
call fcn.100393ef
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x20]
inc ecx
mov dword [ebp - 0x30], ecx
jmp 0x10035986
mov dl, 0x2b
call fcn.100393ef
mov eax, ebx
mov dword [ebp - 0x30], ebx
cmp eax, edi
jge 0x100359c0
mov dl, 0x7c
call fcn.100393ef
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x30], eax
jmp 0x100359ac
mov dl, 0x3d
call fcn.100393ef
mov edi, ebx
lea eax, [esi + 1]
cmp edi, eax
jge 0x10035966
mov dl, 0x7c
call fcn.100393ef
inc edi
jmp 0x100359c9
cmp edi, 1
jle 0x10035a48
lea ecx, [edx - 1]
add ecx, edi
lea eax, [esi + 1]
cmp ecx, eax
jne 0x10035a48
mov eax, ebx
mov dword [ebp - 0x30], ebx
cmp eax, edx
jge 0x10035a07
mov dl, 0x7c
call fcn.100393ef
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x30], eax
jmp 0x100359f0
mov dl, 0x2b
call fcn.100393ef
mov ecx, ebx
mov dword [ebp - 0x30], ebx
lea eax, [edi - 1]
cmp ecx, eax
jge 0x10035a2a
mov dl, 0x7c
call fcn.100393ef
mov ecx, dword [ebp - 0x30]
inc ecx
mov dword [ebp - 0x30], ecx
jmp 0x10035a13
mov dl, 0x3d
call fcn.100393ef
mov edi, ebx
lea eax, [esi + 1]
cmp edi, eax
jge 0x10035966
mov dl, 0x7c
call fcn.100393ef
inc edi
jmp 0x10035a33
mov edx, str.Impossible
mov ecx, 0x1007ad38
call fcn.10003a0a
push eax
call fcn.10016465
pop ecx
push ebx
push 1
lea ecx, [ebp - 0x4c]
mov byte [ebp - 4], 2
call fcn.1000205c
cmp dword [ebp - 0x2c], 0x7bce
jge 0x100357b9
mov edx, str.voxalmrje_mqol_vni_ftgxgvnp_aqytcnlev_wfihvac_fzjziu_tzcsj
mov ecx, 0x1007ad38
call fcn.10003a0a
jmp 0x100357b9