Function at 0x100054c5
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x1005b2aa
call fcn.1005ab18
sub esp, 0x58
cmp byte [ebp + 0xc], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
je 0x100058f5
cmp byte [ebp + 0x1c], 0
je 0x100054f5
mov eax, dword [ecx]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x10005924
mov dword [ebp - 0x3c], 0x45b5
xor ebx, ebx
cmp dword [ebp - 0x3c], 0x4730
jle 0x100058b1
mov edx, ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x38], 0x1c1d
cmp dword [ebp - 0x38], 0x625
jge 0x1000584a
push 3
lea ecx, [ebp - 0x64]
call fcn.10002067
push 3
mov dword [ebp - 4], ebx
mov edi, dword [ebp - 0x64]
pop esi
push edi
call fcn.100078eb
add edi, 4
dec esi
jne 0x10005537
mov esi, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x60]
mov byte [ebp - 0x40], bl
sub ecx, esi
push dword [ebp - 0x40]
sar ecx, 2
push esi
push dword [ebp - 0x60]
call fcn.1000a575
mov eax, dword [esi]
xor edi, edi
mov dword [ebp - 0x30], eax
add esp, 0xc
mov eax, dword [esi + 4]
inc edi
mov dword [ebp - 0x38], eax
mov eax, dword [esi + 8]
mov dword [ebp - 0x18], eax
mov eax, dword [0x10077528]
mov dword [eax], 1
mov eax, dword [0x10077528]
mov dword [eax + 4], ebx
mov esi, dword [0x10077528]
mov eax, edi
cdq
push edx
push eax
push dword [esi + edi*8 - 4]
push dword [esi + edi*8 - 8]
call fcn.10046920
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
mov dword [esi + edi*8], eax
mov dword [esi + edi*8 + 4], edx
inc edi
cmp edi, 0x3f
jl 0x10005587
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x20], ebx
test ecx, ecx
jle 0x10005679
mov eax, ecx
mov dword [ebp - 0x1c], ecx
cdq
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x44], edx
cdq
mov edi, eax
mov dword [ebp - 0x34], edx
mov eax, dword [0x10077528]
mov edx, ecx
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x28], edx
lea eax, [eax + ecx*8]
mov dword [ebp - 0x2c], eax
mov eax, edx
cdq
mov esi, edx
mov ebx, eax
push esi
push ebx
push dword [ebp - 0x34]
push edi
call fcn.10005405
push esi
push ebx
push dword [ebp - 0x44]
mov dword [ebp - 0x4c], eax
mov edi, edx
push dword [ebp - 0x48]
call fcn.10005405
add esp, 0x20
push edx
push eax
push edi
push dword [ebp - 0x4c]
call fcn.10046920
xor ebx, ebx
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
mov esi, dword [ebp - 0x2c]
push dword [esi + 4]
push dword [esi]
push edx
push eax
call fcn.10046920
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
add eax, dword [ebp - 0x24]
push ebx
adc edx, dword [ebp - 0x20]
push 0x3f
push edx
push eax
call fcn.1005abf0
mov edi, dword [ebp - 0x50]
sub esi, 8
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0x28]
dec edx
mov dword [ebp - 0x24], eax
dec dword [ebp - 0x1c]
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x28], edx
jne 0x100055f3
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x2c], 1
mov dword [ebp - 0x28], ebx
test ecx, ecx
jle 0x1000573f
mov eax, ecx
mov dword [ebp - 0x34], ecx
cdq
mov edi, eax
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x30]
cdq
mov dword [ebp - 0x48], eax
mov eax, dword [0x10077528]
mov dword [ebp - 0x4c], edx
mov edx, ecx
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x1c], edx
lea esi, [eax + ecx*8]
mov dword [ebp - 0x30], esi
mov eax, edx
cdq
mov esi, edx
mov ebx, eax
push esi
push ebx
push dword [ebp - 0x50]
push edi
call fcn.10005405
push esi
push ebx
push dword [ebp - 0x4c]
mov dword [ebp - 0x44], eax
mov edi, edx
push dword [ebp - 0x48]
call fcn.10005405
add esp, 0x20
push edx
push eax
push edi
push dword [ebp - 0x44]
call fcn.10046920
xor ebx, ebx
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
mov esi, dword [ebp - 0x30]
push dword [esi + 4]
push dword [esi]
push edx
push eax
call fcn.10046920
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
add eax, dword [ebp - 0x2c]
push ebx
adc edx, dword [ebp - 0x28]
push 0x3f
push edx
push eax
call fcn.1005abf0
mov edi, dword [ebp - 0x54]
sub esi, 8
mov dword [ebp - 0x28], edx
mov edx, dword [ebp - 0x1c]
dec edx
mov dword [ebp - 0x2c], eax
dec dword [ebp - 0x34]
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x1c], edx
jne 0x100056b6
mov ecx, dword [ebp - 0x18]
xor esi, esi
mov edi, ebx
inc esi
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x34], esi
test ecx, ecx
jle 0x100057fa
mov eax, ecx
cdq
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x54], edx
cdq
mov dword [ebp - 0x48], eax
mov eax, dword [0x10077528]
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x38], ecx
lea eax, [eax + ecx*8]
mov dword [ebp - 0x1c], eax
mov eax, ecx
cdq
mov esi, edx
mov ebx, eax
push esi
push ebx
push dword [ebp - 0x54]
push dword [ebp - 0x50]
call fcn.10005405
push esi
push ebx
push dword [ebp - 0x4c]
mov dword [ebp - 0x44], eax
mov edi, edx
push dword [ebp - 0x48]
call fcn.10005405
add esp, 0x20
push edx
push eax
push edi
push dword [ebp - 0x44]
call fcn.10046920
xor ebx, ebx
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
mov ecx, dword [ebp - 0x1c]
push dword [ecx + 4]
push dword [ecx]
push edx
push eax
call fcn.10046920
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
add eax, dword [ebp - 0x34]
push ebx
adc edx, dword [ebp - 0x30]
push 0x3f
push edx
push eax
call fcn.1005abf0
mov ecx, dword [ebp - 0x18]
mov edi, edx
sub dword [ebp - 0x1c], 8
mov esi, eax
dec ecx
mov dword [ebp - 0x34], eax
dec dword [ebp - 0x38]
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x18], ecx
jne 0x10005773
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
call fcn.10046920
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
push edi
push esi
push edx
push eax
call fcn.10046920
push ebx
push 0x3f
push edx
push eax
call fcn.1005abf0
push edx
push eax
mov ecx, 0x10075eb8
call fcn.10001edd
push eax
call fcn.10009c80
or dword [ebp - 4], 0xffffffff
pop ecx
lea ecx, [ebp - 0x64]
call fcn.100020ea
mov edx, dword [ebp - 0x14]
mov edi, ebx
mov esi, ebx
mov ecx, ebx
mov dword [ebp - 0x38], ebx
mov eax, esi
sar eax, cl
mov ecx, 0x10075eb8
and eax, edi
xor eax, edx
cdq
push edx
push eax
call fcn.10001edd
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x38], ecx
cmp ecx, 0x2302
jl 0x10005853
inc esi
cmp esi, 0x4c73
jl 0x1000584e
inc edi
cmp edi, 0x750b
jl 0x1000584c
inc edx
mov dword [ebp - 0x14], edx
cmp edx, 0x79a2
jl 0x10005510
push ebx
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
mov dword [ebp - 4], 1
cmp dword [ebp - 0x3c], 0x43a7
jge 0x100058ee
mov edx, str.gwjwn_qtl_shfyftpb_rzixtxg_qlj_cakzcfvk
mov ecx, 0x10075eb8
call fcn.10003d9f
jmp 0x100058ee
mov eax, dword [ebp + 8]
mov dword [eax], ebx
jmp 0x10005924
cmp byte [ebp + 0x18], 0
je 0x1000591c
mov eax, dword [ebp + 0x14]
lea esi, [ebp + 0xf]
push esi
mov byte [ebp + 0xf], 0
mov ecx, dword [eax]
mov eax, dword [edx]
push ecx
push eax
mov dword [edx + 4], eax
mov ecx, edx
lea eax, [ebp - 0x58]
push eax
call fcn.10008ab0
jmp 0x10005924
mov eax, dword [ebp + 0x10]
mov eax, dword [eax]
dec dword [eax + 8]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret