Function at 0x10020c70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
cmp byte [0x10086585], 0
jne 0x10020cb9
push 0
push 0x7d0
push 0x100870b8
call fcn.1002c120
push 0
push 0x7d0
push 0x100868e8
call fcn.1002c120
push 0
push 0x352
push 0x10086590
call fcn.1002c120
add esp, 0x24
mov esp, ebp
pop ebp
ret
push ebx
push esi
push edi
call fcn.10022d20
mov edx, dword [0x10086558]
mov edi, dword [0x1008655c]
mov esi, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
movss xmm1, dword [0x100560e8]
lea eax, [edx - 2]
add ecx, 2
mov dword [ebp - 0x18], eax
add ecx, edi
mov dword [ebp - 4], edx
cmp dword [0x10087888], 0
lea ebx, [edi - 2]
lea eax, [esi + 7]
mov dword [ebp - 0xc], edi
mov dword [ebp - 8], ebx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x2c], 0
jle 0x10020efc
movd xmm0, ebx
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x28], 0x10086590
mulss xmm0, xmm1
cvttss2si ebx, xmm0
mov dword [ebp - 0x40], ebx
lea eax, [ecx + 1]
mov dword [ebp - 0x34], eax
sub eax, ebx
add eax, 4
mov dword [ebp - 0x24], eax
movzx eax, byte [0x10086563]
mov byte [ebp - 0x1c], al
push dword [ebp - 0x1c]
movzx eax, byte [0x10086562]
mov byte [ebp - 0x14], al
push dword [ebp - 0x14]
mov eax, dword [0x10086560]
mov byte [ebp - 0x3c], ah
mov ebx, dword [ebp - 0x3c]
push ebx
mov byte [ebp - 0x38], al
mov edi, dword [ebp - 0x38]
mov eax, dword [0x10086534]
push edi
push 1
push edx
push ecx
push esi
mov ecx, eax
mov dword [ebp - 0x30], eax
call fcn.100206b0
push dword [ebp - 0x1c]
mov esi, dword [ebp - 0xc]
push dword [ebp - 0x14]
mov ecx, dword [ebp + 8]
dec esi
mov eax, dword [ebp - 4]
dec ecx
push ebx
push edi
push esi
push 1
push dword [ebp - 0x34]
add eax, ecx
mov ecx, dword [ebp - 0x30]
push eax
call fcn.100206b0
push dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x30]
push dword [ebp - 0x14]
push ebx
push edi
push esi
push 1
push dword [ebp - 0x34]
push dword [ebp + 8]
call fcn.100206b0
push dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
push dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
add eax, 0xfffffffe
push ebx
push edi
mov edi, dword [ebp + 8]
dec ecx
push 1
push eax
mov eax, dword [ebp - 0xc]
inc edi
add eax, ecx
mov ecx, dword [ebp - 0x30]
push eax
push edi
call fcn.100206b0
movzx eax, byte [0x10086567]
push eax
movzx eax, byte [0x10086566]
push eax
mov eax, dword [0x10086564]
movzx ecx, ah
push ecx
movzx eax, al
push eax
push dword [ebp - 8]
push dword [ebp - 0x18]
mov ebx, dword [ebp - 0x34]
mov ecx, dword [0x10086534]
push ebx
push edi
call fcn.100206b0
mov esi, dword [ebp - 0x2c]
cmp esi, dword [0x1008658c]
jne 0x10020e6d
cmp byte [0x1008656f], 0
jne 0x10020e4a
movzx eax, byte [0x1008656b]
mov ecx, dword [0x10086534]
push eax
push 0xff
push 0
push 0xff
push dword [ebp - 8]
push dword [ebp - 0x18]
push ebx
push edi
call fcn.100206b0
mov ecx, dword [0x10086534]
push 0xc8
push 0xff
push 0
push 0xff
push dword [ebp - 8]
push 2
push ebx
push edi
call fcn.100206b0
mov ebx, dword [ebp - 0x28]
xor eax, eax
xor byte [ebx + eax], 0x5e
inc eax
cmp eax, 0x20
jl 0x10020e72
movzx eax, byte [0x1008656e]
push ebx
push 1
push 0xff
push eax
movzx eax, byte [0x1008656d]
push eax
movzx eax, byte [0x1008656c]
push eax
push dword [ebp - 0x24]
push dword [ebp - 0x20]
push dword [0x10086530]
call fcn.100081e0
mov ecx, dword [ebp - 0x10]
add esp, 0x24
mov edi, dword [0x1008655c]
inc ecx
add ecx, edi
mov dword [ebp - 0xc], edi
cmp byte [ebx + 0x20], 0
mov dword [ebp - 0x10], ecx
je 0x10020ece
inc ecx
add ecx, edi
mov dword [ebp - 0x10], ecx
mov edx, dword [0x10086558]
inc esi
add ebx, 0x22
mov dword [ebp - 0x2c], esi
cmp esi, dword [0x10087888]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x28], ebx
mov dword [ebp - 4], edx
jge 0x10020ef4
mov ebx, dword [ebp - 0x40]
jmp 0x10020d28
movss xmm1, dword [0x100560e8]
mov ebx, dword [ebp - 8]
inc esi
add esi, edx
cmp byte [0x1008656f], 0
mov dword [ebp - 0x14], esi
je 0x100212f4
mov eax, dword [ebp + 0xc]
movd xmm0, ebx
add eax, 2
cvtdq2ps xmm0, xmm0
add eax, edi
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x10], eax
lea ecx, [eax + 1]
mulss xmm0, xmm1
mov dword [ebp - 0x28], ecx
cvttss2si eax, xmm0
sub ecx, eax
add ecx, 4
cmp dword [0x10087890], 0
mov dword [ebp - 0x34], ecx
jle 0x100212f4
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x38], 0x100868e8
nop dword [eax + eax]
movzx eax, byte [0x10086563]
mov byte [ebp - 0x1c], al
push dword [ebp - 0x1c]
movzx eax, byte [0x10086562]
mov byte [ebp - 0x20], al
push dword [ebp - 0x20]
mov eax, dword [0x10086560]
mov byte [ebp - 0x24], ah
push dword [ebp - 0x24]
mov byte [ebp - 0x40], al
mov ebx, dword [ebp - 0x40]
mov eax, dword [0x10086534]
push ebx
push 1
push edx
push ecx
push esi
mov ecx, eax
mov dword [ebp - 0x2c], eax
call fcn.100206b0
push dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x14]
lea esi, [edi - 1]
push dword [ebp - 0x20]
mov edi, dword [ebp - 0x10]
dec ecx
push dword [ebp - 0x24]
mov eax, dword [ebp - 4]
inc edi
push ebx
push esi
push 1
add eax, ecx
mov ecx, dword [ebp - 0x2c]
push edi
push eax
call fcn.100206b0
push dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x2c]
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push ebx
push esi
push 1
push edi
push dword [ebp - 0x14]
call fcn.100206b0
push dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
push dword [ebp - 0x20]
mov ecx, dword [ebp - 0x10]
add eax, 0xfffffffe
push dword [ebp - 0x24]
mov edi, dword [ebp - 0x14]
dec ecx
push ebx
push 1
push eax
mov eax, dword [ebp - 0xc]
inc edi
add eax, ecx
mov ecx, dword [ebp - 0x2c]
push eax
push edi
call fcn.100206b0
movzx eax, byte [0x10086567]
mov esi, dword [ebp - 8]
mov ebx, dword [ebp - 0x28]
push eax
movzx eax, byte [0x10086566]
push eax
mov eax, dword [0x10086564]
movzx ecx, ah
push ecx
mov ecx, dword [0x10086534]
movzx eax, al
push eax
push esi
push dword [ebp - 0x18]
push ebx
push edi
call fcn.100206b0
mov eax, dword [ebp - 0x30]
cmp eax, dword [0x1008788c]
jne 0x10021098
cmp byte [0x10086584], 0
jne 0x10021077
movzx eax, byte [0x1008656b]
mov ecx, dword [0x10086534]
push eax
push 0xff
push 0
push 0xff
push esi
push dword [ebp - 0x18]
push ebx
push edi
call fcn.100206b0
mov ecx, dword [0x10086534]
push 0xff
push 0xff
push 0
push 0xff
push esi
push 2
push ebx
push edi
call fcn.100206b0
mov ebx, dword [ebp - 0x38]
xor eax, eax
nop dword [eax]
xor byte [ebx + eax], 0x42
inc eax
cmp eax, 0x20
jl 0x100210a0
movzx eax, byte [ebx + 0x46]
mov esi, dword [ebp - 0x34]
push ebx
push 1
push 0xff
push eax
movzx eax, byte [ebx + 0x45]
push eax
movzx eax, byte [ebx + 0x44]
push eax
mov eax, dword [ebp - 0x14]
inc eax
push esi
lea edi, [eax + 6]
push edi
push dword [0x10086530]
call fcn.100081e0
add esp, 0x24
cmp byte [ebx + 0x4b], 0
jne 0x10021293
cmp byte [ebx + 0x4c], 0
mov al, byte [ebx + 0x47]
je 0x1002114d
test al, al
jne 0x10021293
cmp dword [ebx + 0x38], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
jne 0x10021122
test eax, eax
jne 0x10021122
mov eax, dword [0x10086558]
push 0x100510d4
push 1
push 0xff
push 0x50
push 0x50
add eax, 0xffffffd6
jmp 0x10021240
cmp eax, dword [ebx + 0x3c]
jne 0x100211dd
mov eax, dword [0x10086558]
push str.auto
push 1
push 0xff
push 0x50
push 0xff
push 0x50
add eax, 0xffffffd6
jmp 0x10021245
test al, al
je 0x1002119d
mov eax, dword [ebx + 0x20]
sub esp, 8
movss xmm0, dword [eax]
mov eax, dword [0x10086558]
cvtps2pd xmm0, xmm0
add eax, 0xffffffd6
add eax, edi
movsd qword [esp], xmm0
push str._.2f
push 1
push 0xff
push 0xff
push 0xff
push 0xff
push esi
push eax
push dword [0x10086530]
call fcn.100081e0
add esp, 0x2c
jmp 0x10021293
cmp byte [ebx + 0x49], 0
je 0x100211b8
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
test eax, eax
je 0x10021105
push eax
push 0x100510d0
jmp 0x100211e3
mov eax, dword [ebx + 0x38]
test eax, eax
jne 0x100211f8
mov eax, dword [ebx + 0x3c]
cmp eax, 2
je 0x100211d0
cmp eax, 4
jne 0x10021259
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
test eax, eax
je 0x10021105
push eax
push 0x100507f8
push 1
push 0xff
push 0x50
push 0xff
push 0x50
jmp 0x10021279
cmp eax, 0x7d0
jne 0x10021259
cmp dword [ebx + 0x3c], 0x7d1
jne 0x10021259
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
cmp eax, 0x7d0
jne 0x1002121b
push str.english
jmp 0x10021227
cmp eax, 0x7d1
jne 0x10021293
push str.russian
mov eax, dword [0x10086558]
push 1
push 0xff
push 0xff
push 0xff
add eax, 0xffffffc4
push 0xff
push esi
add eax, edi
push eax
push dword [0x10086530]
call fcn.100081e0
add esp, 0x24
jmp 0x10021293
mov eax, dword [ebx + 0x30]
push dword [eax]
push 0x100507f8
push 1
push 0xff
push 0xff
push 0xff
push 0xff
mov eax, dword [0x10086558]
add eax, 0xffffffd6
push esi
add eax, edi
push eax
push dword [0x10086530]
call fcn.100081e0
add esp, 0x28
mov ecx, dword [ebp - 0x10]
inc esi
mov eax, dword [ebp - 0x28]
inc ecx
mov edi, dword [0x1008655c]
inc eax
add ecx, edi
mov dword [ebp - 0xc], edi
add eax, edi
mov dword [ebp - 0x10], ecx
add esi, edi
mov dword [ebp - 0x28], eax
cmp byte [ebx + 0x48], 0
mov dword [ebp - 0x34], esi
je 0x100212cc
inc ecx
inc eax
add ecx, edi
add eax, edi
inc esi
mov dword [ebp - 0x10], ecx
add esi, edi
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x34], esi
mov eax, dword [ebp - 0x30]
add ebx, 0x50
mov edx, dword [0x10086558]
inc eax
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x38], ebx
mov dword [ebp - 4], edx
cmp eax, dword [0x10087890]
jl 0x10020f60
mov ebx, dword [ebp - 8]
inc esi
add esi, edx
cmp byte [0x10086584], 0
mov dword [ebp - 0x34], esi
je 0x100218ab
mov eax, dword [ebp + 0xc]
add eax, 2
movd xmm0, ebx
add eax, edi
mov dword [ebp - 0x10], 0
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x14], eax
lea ecx, [eax + 1]
lea eax, [esi + 7]
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], eax
mulss xmm0, dword [0x100560e8]
cvttss2si eax, xmm0
sub ecx, eax
add ecx, 4
cmp dword [0x10087898], 0
mov dword [ebp - 0x1c], ecx
jle 0x100218ab
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x3c], 0x100870b8
nop word [eax + eax]
movzx eax, byte [0x10086563]
mov byte [ebp - 0x28], al
push dword [ebp - 0x28]
movzx eax, byte [0x10086562]
mov byte [ebp - 0x24], al
push dword [ebp - 0x24]
mov eax, dword [0x10086560]
mov byte [ebp - 0x20], ah
push dword [ebp - 0x20]
mov byte [ebp - 0x40], al
mov ebx, dword [ebp - 0x40]
mov eax, dword [0x10086534]
push ebx
push 1
push edx
push ecx
push esi
mov ecx, eax
mov dword [ebp - 0x38], eax
call fcn.100206b0
push dword [ebp - 0x28]
mov ecx, dword [ebp - 0x34]
lea esi, [edi - 1]
push dword [ebp - 0x24]
mov edi, dword [ebp - 0x14]
dec ecx
push dword [ebp - 0x20]
mov eax, dword [ebp - 4]
inc edi
push ebx
push esi
push 1
add eax, ecx
mov ecx, dword [ebp - 0x38]
push edi
push eax
call fcn.100206b0
push dword [ebp - 0x28]
mov ecx, dword [ebp - 0x38]
push dword [ebp - 0x24]
push dword [ebp - 0x20]
push ebx
push esi
push 1
push edi
push dword [ebp - 0x34]
call fcn.100206b0
push dword [ebp - 0x28]
mov eax, dword [ebp - 4]
push dword [ebp - 0x24]
mov ecx, dword [ebp - 0x14]
add eax, 0xfffffffe
push dword [ebp - 0x20]
mov edi, dword [ebp - 0x34]
dec ecx
push ebx
push 1
push eax
mov eax, dword [ebp - 0xc]
inc edi
add eax, ecx
mov ecx, dword [ebp - 0x38]
push eax
push edi
call fcn.100206b0
movzx eax, byte [0x10086567]
mov esi, dword [ebp - 8]
mov ebx, dword [ebp - 0x30]
push eax
movzx eax, byte [0x10086566]
push eax
mov eax, dword [0x10086564]
movzx ecx, ah
push ecx
mov ecx, dword [0x10086534]
movzx eax, al
push eax
push esi
push dword [ebp - 0x18]
push ebx
push edi
call fcn.100206b0
mov eax, dword [ebp - 0x10]
cmp eax, dword [0x10087894]
jne 0x100214f7
movzx eax, byte [0x1008656b]
mov ecx, dword [0x10086534]
push eax
push 0xff
push 0
push 0xff
push esi
push dword [ebp - 0x18]
push ebx
push edi
call fcn.100206b0
mov ecx, dword [0x10086534]
push 0xc8
push 0xff
push 0
push 0xff
push esi
push 2
push ebx
push edi
call fcn.100206b0
cmp byte [0x10086586], 0
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x2c]
je 0x100214fd
mov eax, dword [0x10087894]
lea ecx, [esi - 0xb]
push 0xc8
push 0
push 0
lea eax, [eax + eax*4]
shl eax, 4
push 0
push 0xf
cmp byte [eax + 0x10087104], 0
mov eax, dword [0x10086558]
je 0x100214e1
push 0x5c
add eax, 0xffffff9a
push ecx
mov ecx, dword [0x10086534]
add eax, edi
push eax
call fcn.100206b0
jmp 0x100214fd
push 0x20
add eax, 0xffffffd6
push ecx
mov ecx, dword [0x10086534]
add eax, edi
push eax
call fcn.100206b0
jmp 0x100214fd
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x3c]
xor eax, eax
xor byte [ebx + eax], 0x42
inc eax
cmp eax, 0x20
jl 0x10021502
movzx eax, byte [0x1008656e]
push ebx
push 1
push 0xff
push eax
movzx eax, byte [0x1008656d]
push eax
movzx eax, byte [0x1008656c]
push eax
push esi
push edi
push dword [0x10086530]
call fcn.100081e0
add esp, 0x24
cmp byte [ebx + 0x4c], 0
je 0x100215e9
mov eax, dword [ebx + 0x40]
movzx eax, byte [eax]
push eax
call fcn.10018540
add esp, 4
cmp byte [0x10086586], 0
je 0x10021591
mov ecx, dword [ebp - 0x10]
cmp ecx, dword [0x10087894]
jne 0x10021591
mov eax, dword [0x10086558]
push 0x10086570
push 1
push 0xff
push 0xff
push 0xff
push 0xff
add eax, 0xffffff9c
jmp 0x100217e3
movd xmm0, dword [0x10086558]
push eax
push 1
push 0xff
push 0xff
push 0xff
cvtdq2ps xmm0, xmm0
push 0xff
push esi
push eax
movss dword [ebp - 0x3c], xmm0
call dword [sym.imp.KERNEL32.dll_lstrlenA]
movss xmm1, dword [ebp - 0x3c]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x100502bc]
addss xmm0, dword [0x10050c7c]
subss xmm1, xmm0
cvttss2si eax, xmm1
jmp 0x100217e4
cmp byte [ebx + 0x4b], 0
mov al, byte [ebx + 0x48]
je 0x10021641
test al, al
jne 0x1002184c
cmp dword [ebx + 0x38], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
jne 0x1002161e
test eax, eax
jne 0x1002161e
push 0x100510d4
push 1
push 0xff
push 0x50
push 0x50
jmp 0x100217d6
cmp eax, dword [ebx + 0x3c]
jne 0x10021720
push str.auto
push 1
push 0xff
push 0x50
push 0xff
push 0x50
jmp 0x100217db
test al, al
je 0x100216b4
cmp byte [0x10086586], 0
je 0x10021668
mov eax, dword [ebp - 0x10]
cmp eax, dword [0x10087894]
jne 0x10021668
push 0x10086570
push 0x100507f4
jmp 0x1002181c
mov eax, dword [ebx + 0x20]
sub esp, 8
movss xmm0, dword [eax]
mov eax, dword [0x10086558]
cvtps2pd xmm0, xmm0
add eax, 0xffffffd6
add eax, edi
movsd qword [esp], xmm0
push str._.2f
push 1
push 0xff
push 0xff
push 0xff
push 0xff
push esi
push eax
push dword [0x10086530]
call fcn.100081e0
add esp, 0x2c
jmp 0x1002184c
cmp byte [ebx + 0x4a], 0
je 0x100216fb
mov eax, dword [ebx + 0x44]
cmp byte [eax], 0
mov eax, dword [0x10086558]
je 0x100216e1
push 0x100510d0
push 1
push 0xff
push 0x50
push 0xff
push 0x50
jmp 0x100217e0
push 0x100510d4
push 1
push 0xff
push 0x50
push 0x50
push 0xff
jmp 0x100217e0
mov eax, dword [ebx + 0x38]
test eax, eax
jne 0x1002173b
mov eax, dword [ebx + 0x3c]
cmp eax, 2
je 0x10021713
cmp eax, 4
jne 0x100217f7
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
test eax, eax
je 0x10021609
push eax
push 0x100507f8
push 1
push 0xff
push 0x50
push 0xff
push 0x50
jmp 0x10021832
cmp eax, 0x7d0
jne 0x10021792
cmp dword [ebx + 0x3c], 0x7d1
jne 0x100217f7
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
cmp eax, 0x7d0
jne 0x10021762
push str.english
jmp 0x10021772
cmp eax, 0x7d1
jne 0x1002184c
push str.russian
mov eax, dword [0x10086558]
push 1
push 0xff
push 0xff
push 0xff
push 0xff
add eax, 0xffffffc4
jmp 0x100217e3
cmp eax, 0x3e8
jne 0x100217f7
cmp dword [ebx + 0x3c], 0x3e9
jne 0x100217f7
mov eax, dword [ebx + 0x30]
mov eax, dword [eax]
cmp eax, 0x3e8
jne 0x100217b5
push str.down
jmp 0x100217c5
cmp eax, 0x3e9
jne 0x1002184c
push 0x10050f18
push 1
push 0xff
push 0xff
push 0xff
push 0xff
mov eax, dword [0x10086558]
add eax, 0xffffffd6
push esi
add eax, edi
push eax
push dword [0x10086530]
call fcn.100081e0
add esp, 0x24
jmp 0x1002184c
cmp byte [0x10086586], 0
je 0x10021812
mov eax, dword [ebp - 0x10]
cmp eax, dword [0x10087894]
jne 0x10021812
push 0x10086570
jmp 0x100217c5
mov eax, dword [ebx + 0x30]
push dword [eax]
push 0x100507f8
push 1
push 0xff
push 0xff
push 0xff
push 0xff
mov eax, dword [0x10086558]
add eax, 0xffffffd6
push esi
add eax, edi
push eax
push dword [0x10086530]
call fcn.100081e0
add esp, 0x28
mov ecx, dword [ebp - 0x14]
inc esi
mov eax, dword [ebp - 0x30]
inc ecx
mov edi, dword [0x1008655c]
inc eax
add ecx, edi
mov dword [ebp - 0xc], edi
add eax, edi
mov dword [ebp - 0x14], ecx
add esi, edi
mov dword [ebp - 0x30], eax
cmp byte [ebx + 0x49], 0
mov dword [ebp - 0x1c], esi
je 0x10021885
inc ecx
inc eax
add ecx, edi
add eax, edi
inc esi
mov dword [ebp - 0x14], ecx
add esi, edi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x1c], esi
mov eax, dword [ebp - 0x10]
add ebx, 0x50
inc eax
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x10], eax
cmp eax, dword [0x10087898]
jge 0x100218ab
mov edx, dword [0x10086558]
mov esi, dword [ebp - 0x34]
mov dword [ebp - 4], edx
jmp 0x10021360
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret