Function at 0x4b7aaa
Capabilities:
Encode data using xor

Disassembly:
push 0x674
mov eax, 0x513e08
call fcn.004e3d69
mov eax, dword [ebp + 8]
mov esi, 0x6098a8
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.004e38a0
add esp, 0xc
call fcn.004be6f3
push eax
lea ecx, [ebp - 0x65c]
call fcn.004027f9
mov byte [ebp - 4], 1
call fcn.004be6f3
push eax
lea ecx, [ebp - 0x660]
call fcn.004027f9
push dword [ebp + 0xc]
lea eax, [ebp - 0x65c]
push 0x5b2754
push eax
mov byte [ebp - 4], 2
call fcn.00402a1d
add esp, 0xc
lea eax, [ebp - 0x660]
push eax
push dword [ebp - 0x65c]
mov ecx, 0x60b2d8
call fcn.004cc99a
test eax, eax
je 0x4b7b85
mov ecx, dword [ebp - 0x658]
lea eax, [ebp - 0x660]
push eax
call fcn.00402305
mov ecx, dword [ebp - 0x660]
add ecx, 0xfffffff0
call fcn.0040285b
mov ecx, dword [ebp - 0x65c]
add ecx, 0xfffffff0
call fcn.0040285b
push esi
jmp 0x4b85f0
push edi
lea eax, [ebp - 0x640]
push ebx
push eax
call fcn.004e38a0
add esp, 0xc
push edi
lea eax, [ebp - 0x440]
push ebx
push eax
call fcn.004e38a0
add esp, 0xc
call fcn.004be6f3
push eax
lea ecx, [ebp - 0x64c]
call fcn.004027f9
push dword [ebp + 0xc]
mov byte [ebp - 4], 3
push dword [0x60b2cc]
lea eax, [ebp - 0x64c]
push eax
call fcn.00402a1d
add esp, 8
lea eax, [ebp - 0x64c]
mov dword [ebp - 0x654], esp
mov ecx, esp
push eax
lea esi, [ebp - 0x440]
call fcn.00402305
mov ecx, esi
call fcn.004b795c
pop ecx
test al, al
je 0x4b7ed6
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 0x4b7d6e
mov ebx, dword [0x60b2d4]
xor edi, edi
push edi
push eax
call fcn.004e38a0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004e38a0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x4b7c4a
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x4b7c77
cmp esi, eax
jb 0x4b7c65
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x4b7c5f
jmp 0x4b7c91
xor eax, eax
cmp esi, 0x1c
jb 0x4b7c80
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x4b7c79
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 0x4b7c9e
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 0x4b7d01
jmp 0x4b7e90
push ebx
push eax
call fcn.004e38a0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push ebx
push eax
call fcn.004e38a0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x4b7d90
xor esi, esi
xor edi, edi
cmp esi, 0x1c
jb 0x4b7da7
xor esi, esi
mov al, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + edi - 0x240], al
inc edi
cmp edi, ecx
jb 0x4b7da0
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 0x4b7dc5
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 0x4b7e28
push eax
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x640]
xor ecx, ecx
push eax
mov word [ebp - 0x242], cx
call fcn.004dfd1a
add esp, 0xc
cmp dword [ebp + 0xc], 6
jne 0x4b7ec7
lea eax, [ebp - 0x640]
push eax
mov ecx, 0x60b2d4
call fcn.00402719
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x64c]
jmp 0x4b859c
mov ecx, dword [ebp - 0x64c]
add ecx, 0xfffffff0
call fcn.0040285b
lea eax, [ebp - 0x654]
mov ebx, SysReAllocStringLen
push eax
lea esi, [ebp - 0x67c]
mov dword [ebp - 0x654], ebx
call fcn.0040ac2c
mov byte [ebp - 4], 4
call fcn.004be6f3
push eax
lea ecx, [ebp - 0x650]
call fcn.004027f9
push dword [ebp + 0xc]
mov byte [ebp - 4], 5
push dword [0x60b2bc]
lea eax, [ebp - 0x650]
push dword [0x60b2c4]
push eax
call fcn.00402a1d
add esp, 0x10
call fcn.004be6f3
push eax
lea ecx, [ebp - 0x654]
call fcn.004027f9
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.0040ac48
mov ebx, dword [ebp - 0x654]
test eax, eax
je 0x4b8292
push ebx
mov eax, esi
push eax
call fcn.0040acb9
test eax, eax
je 0x4b8577
lea eax, [ebp - 0x664]
push eax
lea eax, [ebp - 0x440]
push eax
push ebx
mov eax, esi
push eax
call fcn.0040aea1
test eax, eax
je 0x4b8577
call fcn.0040aca6
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 0x4b811f
mov ebx, dword [0x60b2d4]
call fcn.004e38a0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004e38a0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x4b7ffb
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x4b8028
cmp esi, eax
jb 0x4b8016
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x4b8010
jmp 0x4b8042
xor eax, eax
cmp esi, 0x1c
jb 0x4b8031
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x4b802a
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 0x4b804f
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 0x4b80b2
jmp 0x4b823f
call fcn.004e38a0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004e38a0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x4b813f
xor eax, eax
xor esi, esi
cmp eax, 0x1c
jb 0x4b8156
xor eax, eax
mov dl, byte [ebp + eax - 0x30]
inc eax
mov byte [ebp + esi - 0x240], dl
inc esi
cmp esi, ecx
jb 0x4b814f
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 0x4b8174
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 0x4b81d7
push eax
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x640]
xor ecx, ecx
push eax
mov word [ebp - 0x242], cx
call fcn.004dfd1a
add esp, 0xc
cmp dword [ebp + 0xc], 6
jne 0x4b8276
lea eax, [ebp - 0x640]
push eax
mov ecx, 0x60b2d4
call fcn.00402719
mov ecx, dword [ebp - 0x654]
add ecx, 0xfffffff0
call fcn.0040285b
mov ecx, dword [ebp - 0x650]
add ecx, 0xfffffff0
jmp 0x4b8582
push 1
push edi
push reloc.OLEAUT32.dll_SysReAllocString
lea esi, [ebp - 0x67c]
call fcn.0040ac48
test eax, eax
je 0x4b8577
push ebx
mov eax, esi
push eax
call fcn.0040acb9
test eax, eax
je 0x4b8577
lea eax, [ebp - 0x664]
push eax
lea eax, [ebp - 0x440]
push eax
push ebx
mov eax, esi
push eax
call fcn.0040aea1
test eax, eax
je 0x4b8577
call fcn.0040aca6
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 0x4b8452
mov ebx, dword [0x60b2d4]
call fcn.004e38a0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004e38a0
add esp, 0xc
xor eax, eax
lea ecx, [esi - 1]
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x4b832e
mov eax, dword [ebx - 0xc]
xor esi, esi
cmp eax, edi
je 0x4b835b
cmp esi, eax
jb 0x4b8349
xor esi, esi
mov dl, byte [ebx + esi*2]
inc esi
mov byte [ebp + edi - 0x240], dl
inc edi
cmp edi, ecx
jb 0x4b8343
jmp 0x4b8375
xor eax, eax
cmp esi, 0x1c
jb 0x4b8364
xor esi, esi
mov dl, byte [ebp + esi - 0x30]
inc esi
mov byte [ebp + eax - 0x240], dl
inc eax
cmp eax, ecx
jb 0x4b835d
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 0x4b8382
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 0x4b83e5
jmp 0x4b823f
call fcn.004e38a0
add esp, 0xc
push esi
lea eax, [ebp - 0x240]
push edi
push eax
call fcn.004e38a0
add esp, 0xc
xor eax, eax
mov ecx, 0x100
mov byte [ebp + eax - 0x138], al
inc eax
cmp eax, ecx
jb 0x4b8472
xor eax, eax
xor esi, esi
cmp eax, 0x1c
jb 0x4b8489
xor eax, eax
mov dl, byte [ebp + eax - 0x30]
inc eax
mov byte [ebp + esi - 0x240], dl
inc esi
cmp esi, ecx
jb 0x4b8482
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 0x4b84a7
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 0x4b850a
jmp 0x4b823f
lea ecx, [ebx - 0x10]
call fcn.0040285b
lea ecx, [edi - 0x10]
call fcn.0040285b
lea esi, [ebp - 0x67c]
mov byte [ebp - 4], 2
call fcn.0040aca6
mov ecx, dword [ebp - 0x674]
add ecx, 0xfffffff0
call fcn.0040285b
mov esi, dword [ebp - 0x65c]
push esi
mov ecx, 0x60b2d8
call fcn.004ccb16
lea ecx, [ebp - 0x640]
push ecx
mov ecx, eax
call fcn.00402719
mov ecx, dword [ebp - 0x658]
lea eax, [ebp - 0x640]
push eax
call fcn.0040253b
mov ecx, dword [ebp - 0x660]
add ecx, 0xfffffff0
call fcn.0040285b
lea ecx, [esi - 0x10]
call fcn.0040285b
push 0x6098a8
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x658]
call fcn.004e3dec
ret 8