Function at 0x42716f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5ac
mov eax, dword [0x4eb664]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov dword [ebp - 0x5a0], esi
mov dword [ebp - 0x59c], eax
cmp dword [esi + 0x14], ebx
je 0x4271a7
mov eax, 0x40000
jmp 0x4276d8
cmp byte [esi + 0x2c], bl
je 0x4271b6
mov eax, 0x50000
jmp 0x4276d8
cmp dword [esi], ebx
mov ecx, dword [ebp + 8]
push 0xc
mov edi, ebx
pop eax
cmovne edi, eax
lea edx, [ebp - 0x238]
mov dword [ebp - 0x5a8], edi
sub edx, ecx
movzx eax, word [ecx]
mov word [edx + ecx], ax
lea ecx, [ecx + 2]
test ax, ax
jne 0x4271d1
cmp word [ebp - 0x238], bx
jne 0x4271f3
mov eax, 0x10000
jmp 0x4276d8
lea eax, [ebp - 0x238]
cmp word [eax], 0x5c
jne 0x427205
push 0x2f
pop ecx
mov word [eax], cx
add eax, 2
cmp word [eax], bx
jne 0x4271f9
push 8
pop ebx
lea ecx, [ebp - 0x238]
call fcn.00426896
push dword [ebp - 0x59c]
xor ecx, ecx
test al, al
cmovne ebx, ecx
mov ecx, esi
mov dword [ebp - 0x5a4], ebx
call fcn.00426d94
test eax, eax
jne 0x4276d8
xor ecx, ecx
push ecx
push ecx
push 0x104
lea eax, [ebp - 0x450]
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0x238]
push eax
push ecx
push 0xfde9
mov dword [ebp - 0x23c], ecx
mov byte [ebp - 0x560], cl
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea ecx, [ebp - 0x450]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x427277
xor eax, eax
mov word [ebp - 0x56e], ax
push 0x14
mov eax, 0xb17
mov word [ebp - 0x598], ax
pop eax
sub ecx, edx
mov word [ebp - 0x596], ax
mov eax, dword [esi + 0x68]
push 8
mov dword [ebp - 0x590], eax
pop eax
mov dword [ebp - 0x580], ecx
xor ecx, ecx
push 9
mov byte [ebp - 0x34c], cl
mov dword [ebp - 0x454], ecx
mov dword [ebp - 0x574], ecx
mov dword [ebp - 0x248], 1
mov dword [ebp - 0x240], ecx
mov dword [ebp - 0x58c], ecx
mov word [ebp - 0x594], ax
pop edx
cmp dword [esi], ecx
je 0x4272f2
mov eax, edx
mov word [ebp - 0x594], ax
mov word [ebp - 0x56c], ax
mov word [ebp - 0x592], bx
test ebx, ebx
jne 0x427315
mov eax, dword [esi + 0x70]
test eax, eax
js 0x427315
add eax, edi
mov dword [ebp - 0x588], eax
jmp 0x42731b
mov dword [ebp - 0x588], ecx
mov eax, dword [esi + 0x70]
mov dword [ebp - 0x584], eax
xor eax, eax
mov word [ebp - 0x570], ax
mov eax, dword [esi + 0x4c]
mov dword [ebp - 0x568], eax
mov eax, dword [esi + 0x10]
add eax, dword [esi + 0x18]
mov ebx, dword [esi + 0x58]
mov dword [ebp - 0x564], eax
mov dword [ebp - 0x578], edx
mov edx, dword [esi + 0x5c]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x45c], eax
lea eax, [ebp - 0x30]
mov dword [ebp - 0x458], eax
mov al, byte [esi + 0x58]
mov byte [ebp - 0x13], al
mov eax, edx
mov ecx, ebx
shrd ecx, eax, 8
sar eax, 8
mov byte [ebp - 0x12], cl
mov eax, edx
mov ecx, ebx
shrd ecx, eax, 0x10
sar eax, 0x10
mov al, byte [esi + 0x50]
shrd ebx, edx, 0x18
mov byte [ebp - 0xf], al
mov byte [ebp - 0x11], cl
mov byte [ebp - 0x10], bl
mov ebx, dword [esi + 0x50]
sar edx, 0x18
mov edx, dword [esi + 0x54]
mov eax, edx
mov ecx, ebx
shrd ecx, eax, 8
sar eax, 8
mov byte [ebp - 0xe], cl
mov eax, edx
mov ecx, ebx
shrd ecx, eax, 0x10
shrd ebx, edx, 0x18
sar eax, 0x10
mov al, byte [esi + 0x60]
mov byte [ebp - 0xb], al
mov byte [ebp - 0xd], cl
mov byte [ebp - 0xc], bl
mov ebx, dword [esi + 0x60]
sar edx, 0x18
mov edx, dword [esi + 0x64]
mov eax, edx
mov ecx, ebx
shrd ecx, eax, 8
mov byte [ebp - 0xa], cl
sar eax, 8
mov eax, edx
mov ecx, ebx
shrd ecx, eax, 0x10
shrd ebx, edx, 0x18
mov byte [ebp - 9], cl
mov dword [ebp - 0x18], 0xd5455
mov byte [ebp - 0x14], 7
mov byte [ebp - 8], bl
lea esi, [ebp - 0x18]
lea edi, [ebp - 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov edi, dword [ebp - 0x5a0]
push edi
lea ecx, [ebp - 0x598]
mov dword [ebp - 0x57c], 0x11
sar eax, 0x10
sar edx, 0x18
mov byte [ebp - 0x2e], 5
call fcn.00425e86
pop ecx
test eax, eax
je 0x42743a
mov ecx, edi
call fcn.00426fd4
mov eax, 0x400
jmp 0x4276d8
mov eax, dword [ebp - 0x580]
add eax, 0x1e
add eax, dword [ebp - 0x57c]
add dword [edi + 0x18], eax
cmp dword [edi + 0x14], 0
je 0x427461
mov ecx, edi
call fcn.00426fd4
mov eax, dword [edi + 0x14]
jmp 0x4276d8
lea eax, [edi + 0x30]
mov dword [edi + 0x34], 0x23456789
mov dword [eax], 0x12345678
mov dword [edi + 0x38], 0x34567890
mov esi, dword [edi]
mov dword [ebp - 0x59c], eax
test esi, esi
je 0x427496
mov edi, eax
mov dl, byte [esi]
test dl, dl
je 0x427496
mov ecx, edi
call fcn.0042684c
inc esi
jne 0x427486
cmp byte [0x4f0f10], 0
jne 0x4274b6
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor esi, eax
push esi
call fcn.00499a03
pop ecx
xor esi, esi
call fcn.004999e0
sar eax, 7
mov byte [ebp + esi - 0x24], al
inc esi
cmp esi, 0xc
jl 0x4274b8
mov eax, dword [ebp - 0x590]
shr eax, 8
mov byte [ebp - 0x19], al
xor edi, edi
mov eax, dword [ebp - 0x59c]
mov bl, byte [ebp + edi - 0x24]
mov esi, dword [eax + 8]
and esi, 0xfffd
mov dl, bl
mov ecx, eax
or esi, 2
call fcn.0042684c
mov eax, esi
xor eax, 1
imul eax, esi
shr eax, 8
xor al, bl
mov byte [ebp + edi - 0x24], al
inc edi
cmp edi, 0xc
jl 0x4274d8
mov edi, dword [ebp - 0x5a0]
cmp dword [edi], 0
je 0x42752a
push 0xc
lea eax, [ebp - 0x24]
push eax
mov ecx, edi
call fcn.00426bdd
add dword [edi + 0x18], 0xc
mov esi, dword [ebp - 0x5a4]
xor eax, eax
xor ebx, ebx
cmp dword [edi], eax
push 8
setne al
mov byte [edi + 0x2d], al
pop eax
cmp esi, eax
jne 0x427553
lea eax, [ebp - 0x598]
push eax
mov ecx, edi
call fcn.00427017
jmp 0x42755e
test esi, esi
jne 0x427560
mov ecx, edi
call fcn.00427120
mov ebx, eax
mov ecx, edi
mov byte [edi + 0x2d], 0
call fcn.00426fd4
mov ecx, dword [edi + 0x90]
mov eax, dword [edi + 0x14]
add dword [edi + 0x18], ecx
test eax, eax
jne 0x4276d8
test ebx, ebx
jne 0x427430
add ecx, dword [ebp - 0x5a8]
mov eax, dword [edi + 0x78]
cmp dword [ebp - 0x588], ecx
mov dword [ebp - 0x58c], eax
mov eax, dword [edi + 0x70]
sete dl
mov dword [ebp - 0x588], ecx
mov dword [ebp - 0x584], eax
cmp byte [edi + 0x1c], bl
je 0x427623
cmp dword [edi], ebx
jne 0x427623
mov ax, word [ebp - 0x594]
mov word [ebp - 0x592], si
test al, 1
jne 0x4275d8
mov ecx, 0xfff7
and ax, cx
mov word [ebp - 0x594], ax
mov word [ebp - 0x56c], ax
mov eax, dword [ebp - 0x564]
sub eax, dword [edi + 0x10]
mov ecx, edi
push eax
call fcn.00426cd9
test al, al
jne 0x4275fe
mov eax, 0x2000000
jmp 0x4276d8
push edi
lea ecx, [ebp - 0x598]
call fcn.00425e86
pop ecx
test eax, eax
jne 0x427430
push dword [edi + 0x18]
mov ecx, edi
call fcn.00426cd9
test al, al
jne 0x427665
jmp 0x4275f4
cmp word [ebp - 0x592], si
je 0x427636
mov eax, 0x4000000
jmp 0x4276d8
test esi, esi
jne 0x42763e
test dl, dl
je 0x42762c
push edi
lea ecx, [ebp - 0x598]
call fcn.004260f6
pop ecx
test eax, eax
jne 0x427430
mov ax, word [ebp - 0x56c]
add dword [edi + 0x18], 0x10
mov word [ebp - 0x594], ax
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x4276d8
push dword [ebp - 0x578]
call fcn.00449b05
pop ecx
push dword [ebp - 0x578]
mov esi, eax
push dword [ebp - 0x458]
push esi
call fcn.00491b80
add esp, 0xc
mov dword [ebp - 0x458], esi
push 0x360
call fcn.00449b05
mov edx, eax
pop ecx
mov ecx, 0xd8
lea esi, [ebp - 0x598]
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x5a0]
mov ecx, dword [esi + 0x44]
test ecx, ecx
jne 0x4276c5
mov dword [esi + 0x44], edx
jmp 0x4276d6
mov ecx, dword [eax]
lea eax, [ecx + 0x35c]
cmp dword [eax], 0
jne 0x4276c3
mov dword [ecx + 0x35c], edx
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0048f059
leave
ret 0x10