Function at 0x485678
Capabilities:
Encode data using xor

Disassembly:
push 0x674
mov eax, 0x4d6c63
call fcn.004ae269
mov eax, dword [ebp + 8]
mov esi, 0x565304
xor ebx, ebx
mov dword [ebp - 0x664], ebx
push esi
mov dword [ebp - 0x658], eax
mov dword [ebp - 0x680], esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, 0x200
push edi
lea eax, [ebp - 0x640]
push ebx
push eax
mov dword [ebp - 4], ebx
call fcn.004adda0
add esp, 0xc
call fcn.0048aa29
push eax
lea ecx, [ebp - 0x65c]
call fcn.00402840
mov byte [ebp - 4], 1
call fcn.0048aa29
push eax
lea ecx, [ebp - 0x660]
call fcn.00402840
push dword [ebp + 0xc]
lea eax, [ebp - 0x65c]
push 0x52303c
push eax
mov byte [ebp - 4], 2
call fcn.00402a45
add esp, 0xc
lea eax, [ebp - 0x660]
push eax
push dword [ebp - 0x65c]
mov ecx, 0x566ab0
call fcn.00498dbe
test eax, eax
je 0x485753
mov ecx, dword [ebp - 0x658]
lea eax, [ebp - 0x660]
push eax
call fcn.004025a1
mov ecx, dword [ebp - 0x660]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x65c]
add ecx, 0xfffffff0
call fcn.00402883
push esi
jmp 0x4861be
push edi
lea eax, [ebp - 0x640]
push ebx
push eax
call fcn.004adda0
add esp, 0xc
push edi
lea eax, [ebp - 0x440]
push ebx
push eax
call fcn.004adda0
add esp, 0xc
call fcn.0048aa29
push eax
lea ecx, [ebp - 0x64c]
call fcn.00402840
push dword [ebp + 0xc]
mov byte [ebp - 4], 3
push dword [0x566aa4]
lea eax, [ebp - 0x64c]
push eax
call fcn.00402a45
add esp, 8
lea eax, [ebp - 0x64c]
mov dword [ebp - 0x654], esp
mov ecx, esp
push eax
lea esi, [ebp - 0x440]
call fcn.004025a1
mov ecx, esi
call fcn.0048552a
pop ecx
test al, al
je 0x485aa4
cmp dword [ebp + 0xc], 6
push 7
pop ecx
mov esi, str.Microsoft_Visual_C_Library
lea edi, [ebp - 0x30]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x101
lea eax, [ebp - 0x138]
push esi
je 0x48593c
mov ebx, dword [0x566aac]
xor edi, edi
push edi
push eax
call fcn.004adda0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004adda0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x485818
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x485845
cmp esi, eax
jb 0x485833
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x48582d
jmp 0x48585f
xor eax, eax
cmp esi, 0x1c
jb 0x48584e
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x485847
xor edx, edx
mov dword [ebp - 0x648], edx
mov eax, 0xff
movzx edi, byte [ebp + edx - 0x240]
add edi, dword [ebp - 0x648]
lea esi, [ebp + edx - 0x138]
mov bl, byte [esi]
mov byte [ebp - 0x641], bl
movzx ebx, bl
add ebx, edi
and ebx, eax
mov edi, ebx
movzx bx, byte [ebp - 0x641]
movzx ebx, bx
mov dword [ebp - 0x648], edi
lea edi, [ebp + edi - 0x138]
mov dword [ebp - 0x654], ebx
mov bl, byte [edi]
mov byte [esi], bl
mov bl, byte [ebp - 0x654]
inc edx
mov byte [edi], bl
cmp edx, ecx
jb 0x48586c
xor edi, edi
mov dword [ebp - 0x648], edi
mov dword [ebp - 0x650], edi
inc edi
and edi, eax
lea ecx, [ebp + edi - 0x138]
mov dl, byte [ecx]
movzx esi, dl
add esi, dword [ebp - 0x648]
movzx dx, dl
and esi, eax
movzx edx, dx
mov dword [ebp - 0x648], esi
lea esi, [ebp + esi - 0x138]
mov bl, byte [esi]
mov byte [ecx], bl
mov byte [esi], dl
movzx ecx, byte [ecx]
movzx edx, dl
add ecx, edx
mov edx, dword [ebp - 0x650]
and ecx, eax
movzx cx, byte [ebp + ecx - 0x138]
movzx ecx, cx
lea edx, [ebp + edx - 0x440]
xor byte [edx], cl
inc dword [ebp - 0x650]
cmp dword [ebp - 0x650], 0x1fe
jb 0x4858cf
jmp 0x485a5e
push ebx
push eax
call fcn.004adda0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push ebx
push eax
call fcn.004adda0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x48595e
xor esi, esi
xor edi, edi
cmp esi, 0x1c
jb 0x485975
xor esi, esi
mov al, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + edi - 0x240], al
inc edi
cmp edi, ecx
jb 0x48596e
mov dword [ebp - 0x648], ebx
xor edx, edx
mov eax, 0xff
movzx edi, byte [ebp + edx - 0x240]
add edi, dword [ebp - 0x648]
lea esi, [ebp + edx - 0x138]
mov bl, byte [esi]
mov byte [ebp - 0x641], bl
movzx ebx, bl
add ebx, edi
and ebx, eax
mov edi, ebx
movzx bx, byte [ebp - 0x641]
movzx ebx, bx
mov dword [ebp - 0x648], edi
lea edi, [ebp + edi - 0x138]
mov dword [ebp - 0x654], ebx
mov bl, byte [edi]
mov byte [esi], bl
mov bl, byte [ebp - 0x654]
inc edx
mov byte [edi], bl
cmp edx, ecx
jb 0x485993
xor edi, edi
mov dword [ebp - 0x648], edi
mov dword [ebp - 0x650], edi
inc edi
and edi, eax
lea edx, [ebp + edi - 0x138]
mov cl, byte [edx]
movzx esi, cl
add esi, dword [ebp - 0x648]
movzx cx, cl
and esi, eax
movzx ecx, cx
mov dword [ebp - 0x648], esi
lea esi, [ebp + esi - 0x138]
mov bl, byte [esi]
mov byte [edx], bl
mov byte [esi], cl
movzx edx, byte [edx]
movzx ecx, cl
add ecx, edx
mov edx, dword [ebp - 0x650]
and ecx, eax
movzx cx, byte [ebp + ecx - 0x138]
movzx ecx, cx
lea edx, [ebp + edx - 0x440]
xor byte [edx], cl
inc dword [ebp - 0x650]
cmp dword [ebp - 0x650], 0x1fe
jb 0x4859f6
push eax
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x640]
xor ecx, ecx
push eax
mov word [ebp - 0x242], cx
call fcn.004abafa
add esp, 0xc
cmp dword [ebp + 0xc], 6
jne 0x485a95
lea eax, [ebp - 0x640]
push eax
mov ecx, 0x566aac
call fcn.0040276b
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x64c]
jmp 0x48616a
mov ecx, dword [ebp - 0x64c]
add ecx, 0xfffffff0
call fcn.00402883
lea eax, [ebp - 0x654]
mov ebx, SysReAllocStringLen
push eax
lea esi, [ebp - 0x67c]
mov dword [ebp - 0x654], ebx
call fcn.0040ab14
mov byte [ebp - 4], 4
call fcn.0048aa29
push eax
lea ecx, [ebp - 0x650]
call fcn.00402840
push dword [ebp + 0xc]
mov byte [ebp - 4], 5
push dword [0x566a94]
lea eax, [ebp - 0x650]
push dword [0x566a9c]
push eax
call fcn.00402a45
add esp, 0x10
call fcn.0048aa29
push eax
lea ecx, [ebp - 0x654]
call fcn.00402840
mov byte [ebp - 4], 6
mov dword [ebp - 0x664], edi
mov edi, dword [ebp - 0x650]
push 1
push edi
push ebx
mov dword [ebp - 0x67c], 0x20019
call fcn.0040ab30
mov ebx, dword [ebp - 0x654]
test eax, eax
je 0x485e60
push ebx
mov eax, esi
push eax
call fcn.0040aba1
test eax, eax
je 0x486145
lea eax, [ebp - 0x664]
push eax
lea eax, [ebp - 0x440]
push eax
push ebx
mov eax, esi
push eax
call fcn.0040ad5f
test eax, eax
je 0x486145
call fcn.0040ab8e
push 7
pop ecx
mov esi, str.Microsoft_Visual_C_Library
lea edi, [ebp - 0x30]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x101
xor edi, edi
cmp dword [ebp + 0xc], 6
push esi
lea eax, [ebp - 0x138]
push edi
push eax
je 0x485ced
mov ebx, dword [0x566aac]
call fcn.004adda0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004adda0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x485bc9
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x485bf6
cmp esi, eax
jb 0x485be4
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x485bde
jmp 0x485c10
xor eax, eax
cmp esi, 0x1c
jb 0x485bff
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x485bf8
xor edx, edx
mov dword [ebp - 0x648], edx
mov eax, 0xff
movzx edi, byte [ebp + edx - 0x240]
add edi, dword [ebp - 0x648]
lea esi, [ebp + edx - 0x138]
mov bl, byte [esi]
mov byte [ebp - 0x641], bl
movzx ebx, bl
add ebx, edi
and ebx, eax
mov edi, ebx
movzx bx, byte [ebp - 0x641]
movzx ebx, bx
mov dword [ebp - 0x648], edi
lea edi, [ebp + edi - 0x138]
mov dword [ebp - 0x64c], ebx
mov bl, byte [edi]
mov byte [esi], bl
mov bl, byte [ebp - 0x64c]
inc edx
mov byte [edi], bl
cmp edx, ecx
jb 0x485c1d
xor edi, edi
mov dword [ebp - 0x648], edi
mov dword [ebp - 0x64c], edi
inc edi
and edi, eax
lea edx, [ebp + edi - 0x138]
mov cl, byte [edx]
movzx esi, cl
add esi, dword [ebp - 0x648]
movzx cx, cl
and esi, eax
movzx ecx, cx
mov dword [ebp - 0x648], esi
lea esi, [ebp + esi - 0x138]
mov bl, byte [esi]
mov byte [edx], bl
mov byte [esi], cl
movzx edx, byte [edx]
movzx ecx, cl
add ecx, edx
mov edx, dword [ebp - 0x64c]
and ecx, eax
movzx cx, byte [ebp + ecx - 0x138]
movzx ecx, cx
lea edx, [ebp + edx - 0x440]
xor byte [edx], cl
inc dword [ebp - 0x64c]
cmp dword [ebp - 0x64c], 0x1fe
jb 0x485c80
jmp 0x485e0d
call fcn.004adda0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004adda0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x485d0d
xor eax, eax
xor esi, esi
cmp eax, 0x1c
jb 0x485d24
xor eax, eax
mov dl, byte [ebp + eax - 0x30]
inc eax
mov byte [ebp + esi - 0x240], dl
inc esi
cmp esi, ecx
jb 0x485d1d
mov dword [ebp - 0x648], edi
xor edx, edx
mov eax, 0xff
movzx edi, byte [ebp + edx - 0x240]
add edi, dword [ebp - 0x648]
lea esi, [ebp + edx - 0x138]
mov bl, byte [esi]
mov byte [ebp - 0x641], bl
movzx ebx, bl
add ebx, edi
and ebx, eax
mov edi, ebx
movzx bx, byte [ebp - 0x641]
movzx ebx, bx
mov dword [ebp - 0x648], edi
lea edi, [ebp + edi - 0x138]
mov dword [ebp - 0x64c], ebx
mov bl, byte [edi]
mov byte [esi], bl
mov bl, byte [ebp - 0x64c]
inc edx
mov byte [edi], bl
cmp edx, ecx
jb 0x485d42
xor edi, edi
mov dword [ebp - 0x648], edi
mov dword [ebp - 0x64c], edi
inc edi
and edi, eax
lea edx, [ebp + edi - 0x138]
mov cl, byte [edx]
movzx esi, cl
add esi, dword [ebp - 0x648]
movzx cx, cl
and esi, eax
movzx ecx, cx
mov dword [ebp - 0x648], esi
lea esi, [ebp + esi - 0x138]
mov bl, byte [esi]
mov byte [edx], bl
mov byte [esi], cl
movzx edx, byte [edx]
movzx ecx, cl
add ecx, edx
mov edx, dword [ebp - 0x64c]
and ecx, eax
movzx cx, byte [ebp + ecx - 0x138]
movzx ecx, cx
lea edx, [ebp + edx - 0x440]
xor byte [edx], cl
inc dword [ebp - 0x64c]
cmp dword [ebp - 0x64c], 0x1fe
jb 0x485da5
push eax
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x640]
xor ecx, ecx
push eax
mov word [ebp - 0x242], cx
call fcn.004abafa
add esp, 0xc
cmp dword [ebp + 0xc], 6
jne 0x485e44
lea eax, [ebp - 0x640]
push eax
mov ecx, 0x566aac
call fcn.0040276b
mov ecx, dword [ebp - 0x654]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x650]
add ecx, 0xfffffff0
jmp 0x486150
push 1
push edi
push reloc.OLEAUT32.dll_SysReAllocString
lea esi, [ebp - 0x67c]
call fcn.0040ab30
test eax, eax
je 0x486145
push ebx
mov eax, esi
push eax
call fcn.0040aba1
test eax, eax
je 0x486145
lea eax, [ebp - 0x664]
push eax
lea eax, [ebp - 0x440]
push eax
push ebx
mov eax, esi
push eax
call fcn.0040ad5f
test eax, eax
je 0x486145
call fcn.0040ab8e
push 7
pop ecx
mov esi, str.Microsoft_Visual_C_Library
lea edi, [ebp - 0x30]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x101
xor edi, edi
cmp dword [ebp + 0xc], 6
push esi
lea eax, [ebp - 0x138]
push edi
push eax
je 0x486020
mov ebx, dword [0x566aac]
call fcn.004adda0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004adda0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x485efc
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x485f29
cmp esi, eax
jb 0x485f17
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x485f11
jmp 0x485f43
xor eax, eax
cmp esi, 0x1c
jb 0x485f32
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x485f2b
xor edx, edx
mov dword [ebp - 0x648], edx
mov eax, 0xff
movzx edi, byte [ebp + edx - 0x240]
add edi, dword [ebp - 0x648]
lea esi, [ebp + edx - 0x138]
mov bl, byte [esi]
mov byte [ebp - 0x641], bl
movzx ebx, bl
add ebx, edi
and ebx, eax
mov edi, ebx
movzx bx, byte [ebp - 0x641]
movzx ebx, bx
mov dword [ebp - 0x648], edi
lea edi, [ebp + edi - 0x138]
mov dword [ebp - 0x64c], ebx
mov bl, byte [edi]
mov byte [esi], bl
mov bl, byte [ebp - 0x64c]
inc edx
mov byte [edi], bl
cmp edx, ecx
jb 0x485f50
xor edi, edi
mov dword [ebp - 0x648], edi
mov dword [ebp - 0x64c], edi
inc edi
and edi, eax
lea ecx, [ebp + edi - 0x138]
mov dl, byte [ecx]
movzx esi, dl
add esi, dword [ebp - 0x648]
movzx dx, dl
and esi, eax
movzx edx, dx
mov dword [ebp - 0x648], esi
lea esi, [ebp + esi - 0x138]
mov bl, byte [esi]
mov byte [ecx], bl
mov byte [esi], dl
movzx ecx, byte [ecx]
movzx edx, dl
add ecx, edx
mov edx, dword [ebp - 0x64c]
and ecx, eax
movzx cx, byte [ebp + ecx - 0x138]
movzx ecx, cx
lea edx, [ebp + edx - 0x440]
xor byte [edx], cl
inc dword [ebp - 0x64c]
cmp dword [ebp - 0x64c], 0x1fe
jb 0x485fb3
jmp 0x485e0d
call fcn.004adda0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004adda0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x486040
xor eax, eax
xor esi, esi
cmp eax, 0x1c
jb 0x486057
xor eax, eax
mov dl, byte [ebp + eax - 0x30]
inc eax
mov byte [ebp + esi - 0x240], dl
inc esi
cmp esi, ecx
jb 0x486050
mov dword [ebp - 0x648], edi
xor edx, edx
mov eax, 0xff
movzx edi, byte [ebp + edx - 0x240]
add edi, dword [ebp - 0x648]
lea esi, [ebp + edx - 0x138]
mov bl, byte [esi]
mov byte [ebp - 0x641], bl
movzx ebx, bl
add ebx, edi
and ebx, eax
mov edi, ebx
movzx bx, byte [ebp - 0x641]
movzx ebx, bx
mov dword [ebp - 0x648], edi
lea edi, [ebp + edi - 0x138]
mov dword [ebp - 0x64c], ebx
mov bl, byte [edi]
mov byte [esi], bl
mov bl, byte [ebp - 0x64c]
inc edx
mov byte [edi], bl
cmp edx, ecx
jb 0x486075
xor edi, edi
mov dword [ebp - 0x648], edi
mov dword [ebp - 0x64c], edi
inc edi
and edi, eax
lea edx, [ebp + edi - 0x138]
mov cl, byte [edx]
movzx esi, cl
add esi, dword [ebp - 0x648]
movzx cx, cl
and esi, eax
movzx ecx, cx
mov dword [ebp - 0x648], esi
lea esi, [ebp + esi - 0x138]
mov bl, byte [esi]
mov byte [edx], bl
mov byte [esi], cl
movzx edx, byte [edx]
movzx ecx, cl
add ecx, edx
mov edx, dword [ebp - 0x64c]
and ecx, eax
movzx cx, byte [ebp + ecx - 0x138]
movzx ecx, cx
lea edx, [ebp + edx - 0x440]
xor byte [edx], cl
inc dword [ebp - 0x64c]
cmp dword [ebp - 0x64c], 0x1fe
jb 0x4860d8
jmp 0x485e0d
lea ecx, [ebx - 0x10]
call fcn.00402883
lea ecx, [edi - 0x10]
call fcn.00402883
lea esi, [ebp - 0x67c]
mov byte [ebp - 4], 2
call fcn.0040ab8e
mov ecx, dword [ebp - 0x674]
add ecx, 0xfffffff0
call fcn.00402883
mov esi, dword [ebp - 0x65c]
push esi
mov ecx, 0x566ab0
call fcn.00498eba
lea ecx, [ebp - 0x640]
push ecx
mov ecx, eax
call fcn.0040276b
mov ecx, dword [ebp - 0x658]
lea eax, [ebp - 0x640]
push eax
call fcn.0040255d
mov ecx, dword [ebp - 0x660]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [esi - 0x10]
call fcn.00402883
push 0x565304
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x658]
call fcn.004ae2ec
ret 8