Function at 0x485da0
Capabilities:
Encode data using xor

Disassembly:
push 0x674
mov eax, 0x4d7161
call fcn.004ae989
mov eax, dword [ebp + 8]
mov esi, 0x5685a0
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.004ae4c0
add esp, 0xc
call fcn.0048b151
push eax
lea ecx, [ebp - 0x65c]
call fcn.00402821
mov byte [ebp - 4], 1
call fcn.0048b151
push eax
lea ecx, [ebp - 0x660]
call fcn.00402821
push dword [ebp + 0xc]
lea eax, [ebp - 0x65c]
push 0x52513c
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, 0x569d98
call fcn.004994a5
test eax, eax
je 0x485e7b
mov ecx, dword [ebp - 0x658]
lea eax, [ebp - 0x660]
push eax
call fcn.00402582
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 0x4868e6
push edi
lea eax, [ebp - 0x640]
push ebx
push eax
call fcn.004ae4c0
add esp, 0xc
push edi
lea eax, [ebp - 0x440]
push ebx
push eax
call fcn.004ae4c0
add esp, 0xc
call fcn.0048b151
push eax
lea ecx, [ebp - 0x64c]
call fcn.00402821
push dword [ebp + 0xc]
mov byte [ebp - 4], 3
push dword [0x569d8c]
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.00402582
mov ecx, esi
call fcn.00485c52
pop ecx
test al, al
je 0x4861cc
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 0x486064
mov ebx, dword [0x569d94]
xor edi, edi
push edi
push eax
call fcn.004ae4c0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004ae4c0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x485f40
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x485f6d
cmp esi, eax
jb 0x485f5b
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x485f55
jmp 0x485f87
xor eax, eax
cmp esi, 0x1c
jb 0x485f76
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x485f6f
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 0x485f94
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 0x485ff7
jmp 0x486186
push ebx
push eax
call fcn.004ae4c0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push ebx
push eax
call fcn.004ae4c0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x486086
xor esi, esi
xor edi, edi
cmp esi, 0x1c
jb 0x48609d
xor esi, esi
mov al, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + edi - 0x240], al
inc edi
cmp edi, ecx
jb 0x486096
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 0x4860bb
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 0x48611e
push eax
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x640]
xor ecx, ecx
push eax
mov word [ebp - 0x242], cx
call fcn.004ac21a
add esp, 0xc
cmp dword [ebp + 0xc], 6
jne 0x4861bd
lea eax, [ebp - 0x640]
push eax
mov ecx, 0x569d94
call fcn.0040274c
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x64c]
jmp 0x486892
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.0040ab2d
mov byte [ebp - 4], 4
call fcn.0048b151
push eax
lea ecx, [ebp - 0x650]
call fcn.00402821
push dword [ebp + 0xc]
mov byte [ebp - 4], 5
push dword [0x569d7c]
lea eax, [ebp - 0x650]
push dword [0x569d84]
push eax
call fcn.00402a45
add esp, 0x10
call fcn.0048b151
push eax
lea ecx, [ebp - 0x654]
call fcn.00402821
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.0040ab49
mov ebx, dword [ebp - 0x654]
test eax, eax
je 0x486588
push ebx
mov eax, esi
push eax
call fcn.0040abba
test eax, eax
je 0x48686d
lea eax, [ebp - 0x664]
push eax
lea eax, [ebp - 0x440]
push eax
push ebx
mov eax, esi
push eax
call fcn.0040ad78
test eax, eax
je 0x48686d
call fcn.0040aba7
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 0x486415
mov ebx, dword [0x569d94]
call fcn.004ae4c0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004ae4c0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x4862f1
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x48631e
cmp esi, eax
jb 0x48630c
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x486306
jmp 0x486338
xor eax, eax
cmp esi, 0x1c
jb 0x486327
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x486320
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 0x486345
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 0x4863a8
jmp 0x486535
call fcn.004ae4c0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004ae4c0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x486435
xor eax, eax
xor esi, esi
cmp eax, 0x1c
jb 0x48644c
xor eax, eax
mov dl, byte [ebp + eax - 0x30]
inc eax
mov byte [ebp + esi - 0x240], dl
inc esi
cmp esi, ecx
jb 0x486445
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 0x48646a
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 0x4864cd
push eax
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x640]
xor ecx, ecx
push eax
mov word [ebp - 0x242], cx
call fcn.004ac21a
add esp, 0xc
cmp dword [ebp + 0xc], 6
jne 0x48656c
lea eax, [ebp - 0x640]
push eax
mov ecx, 0x569d94
call fcn.0040274c
mov ecx, dword [ebp - 0x654]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [ebp - 0x650]
add ecx, 0xfffffff0
jmp 0x486878
push 1
push edi
push reloc.OLEAUT32.dll_SysReAllocString
lea esi, [ebp - 0x67c]
call fcn.0040ab49
test eax, eax
je 0x48686d
push ebx
mov eax, esi
push eax
call fcn.0040abba
test eax, eax
je 0x48686d
lea eax, [ebp - 0x664]
push eax
lea eax, [ebp - 0x440]
push eax
push ebx
mov eax, esi
push eax
call fcn.0040ad78
test eax, eax
je 0x48686d
call fcn.0040aba7
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 0x486748
mov ebx, dword [0x569d94]
call fcn.004ae4c0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004ae4c0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x486624
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x486651
cmp esi, eax
jb 0x48663f
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x486639
jmp 0x48666b
xor eax, eax
cmp esi, 0x1c
jb 0x48665a
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x486653
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 0x486678
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 0x4866db
jmp 0x486535
call fcn.004ae4c0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004ae4c0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x486768
xor eax, eax
xor esi, esi
cmp eax, 0x1c
jb 0x48677f
xor eax, eax
mov dl, byte [ebp + eax - 0x30]
inc eax
mov byte [ebp + esi - 0x240], dl
inc esi
cmp esi, ecx
jb 0x486778
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 0x48679d
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 0x486800
jmp 0x486535
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.0040aba7
mov ecx, dword [ebp - 0x674]
add ecx, 0xfffffff0
call fcn.00402883
mov esi, dword [ebp - 0x65c]
push esi
mov ecx, 0x569d98
call fcn.004995a1
lea ecx, [ebp - 0x640]
push ecx
mov ecx, eax
call fcn.0040274c
mov ecx, dword [ebp - 0x658]
lea eax, [ebp - 0x640]
push eax
call fcn.0040253e
mov ecx, dword [ebp - 0x660]
add ecx, 0xfffffff0
call fcn.00402883
lea ecx, [esi - 0x10]
call fcn.00402883
push 0x5685a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x658]
call fcn.004aea0c
ret 8