Function at 0x549430
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
cmp dword [0x599378], 0
push ebx
push esi
push edi
push 2
pop ebx
jne 0x54946f
push str.LdrUnloadDll
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call fcn.00549160
test eax, eax
je 0x549469
xor edi, edi
inc edi
mov dword [0x599378], edi
jmp 0x54947e
mov dword [0x599378], ebx
xor edi, edi
inc edi
cmp dword [0x599378], edi
jne 0x54951d
mov eax, dword [str.kernel32.dll]
jmp 0x5494bd
mov esi, eax
mov eax, dword [ebp + 8]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x5494ac
test cl, cl
je 0x5494a8
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x5494ac
add eax, ebx
add esi, ebx
test cl, cl
jne 0x54948a
xor eax, eax
jmp 0x5494b1
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x5494d7
mov eax, dword [edi*8 + 0x597f28]
inc edi
test eax, eax
mov dword [ebp + 0x14], edi
jne 0x549485
push dword [ebp + 0x18]
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
pop edi
pop esi
pop ebx
pop ebp
ret 0x14
lea edi, [edi*8 + 0x597f24]
cmp dword [edi], 0
jne 0x549516
push dword [ebp + 8]
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryA]
call esi
mov ebx, eax
test ebx, ebx
jne 0x549503
cmp dword [ebp + 0x14], 0xd
jne 0x549503
push str.security.dll
call esi
mov ebx, eax
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
test eax, eax
je 0x549516
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push dword [ebp + 0xc]
pushal
pushfd
or esi, edi
call fcn.00439c41
xchg eax, esi
xor esi, eax
mov edi, ecx
sub esi, 0x2593ee0
mov eax, eax
call fcn.0043062a
or eax, eax
rol esi, 0x1e
mov eax, eax
mov eax, esp
test esp, ebx
jo 0x5495a9
or edx, dword [0x5989a4]
mov ebx, esi
call fcn.0049a1ed
dec edi
xchg ecx, edx
dec eax
shr edi, 0x1c
sub esi, 0x1e3893c
add esi, ecx
mov ecx, 0x9976f3
xchg esi, eax
test eax, ecx
jo 0x549530
inc ebx
neg esi
mov ebx, dword [0x594e12]
inc esi
call fcn.00439c41
mov ebx, dword [str.Gospel]
shr ebx, 0x12
dec eax
loop 0x549563
dec esi
call fcn.0049a1ed
and esi, edi
xor ebx, edx
mov esi, eax
and esi, edi
add ecx, eax
shl eax, 0xa
xor eax, esp
inc eax
shl eax, 0x1c
xor eax, eax
sub eax, 0x31eca420
add esi, eax
shr esi, 2
and esi, edi
xor esi, edx
mov ecx, 0xb31e58
add ah, byte [ecx]
invalid
call fcn.004a3a86
shr esi, 0x16
call fcn.004026c4
dec eax
inc eax
dec eax
call fcn.00402325
ror esi, 0xa
rol ebx, 0xc
not eax
loop 0x5495b3
inc eax
mov edx, 0x33024b8e
or esi, edi
mov ecx, dword [0x5938f8]
xor edx, eax
dec eax
mov ecx, dword [0x5953d0]
shr esi, 0x17
mov ecx, eax
xor edi, edx
neg edx
sub ecx, ebp
and esi, edi
xor esi, esp
xor edx, eax
dec edi
mov ecx, 0x954d6d
mov esi, dword [0x593614]
inc eax
call fcn.00529642
neg esi
call fcn.00439c41
not esi
xchg eax, eax
dec eax
xor ebx, dword [0x58ffb4]
inc edx
xor edx, dword [0x5971f8]
inc eax
or dword [0x59a533], 0xc70c860
shr esi, 0xa
test esi, eax
jo 0x5495d0
loop 0x549600
sub esi, eax
xor edx, edi
rol edi, 0xe
and esi, edi
shl edx, 4
mov esi, eax
sub esi, esi
xor eax, esp
test eax, ecx
jo 0x54966d
mov eax, eax
rol esi, 0x12
and esi, edi
ror esi, 0x12
rol eax, 0xe
not eax
rol esi, 6
xor esi, eax
sub eax, esp
mov ebx, esp
dec esi
neg ebx
mov esi, eax
mov esi, eax
or esi, edi
test esi, 0x7f0440
jb 0x549656
invalid
mov ecx, esi
or esi, edi
xor ebx, 0x16a32968
mov esi, eax
dec ebx
neg eax
shr ebx, 8
mov edx, eax
mov ecx, 0x640c00
xor dword [0x59a792], edx
shr eax, 0x1d
call fcn.00401d19
neg esi
add dword [0x59a78a], ecx
mov dword [0x59a680], 0xbd240e0
call fcn.0043062a
xor ebx, dword [0x593c3e]
xchg eax, esi
shr eax, 2
ror eax, 0x1c
inc eax
rol esi, 0x1b
test esp, 0x212ea643
jb 0x5496c2
enter 0x401c, 0xffffffffffffffc1
invalid
loop 0x549691
xor esi, eax
mov eax, 0x2f7638d6
test ebx, ecx
jb 0x5496f5
xor esi, eax
and eax, 0x48b66a4
ror esi, 0x11
mov edx, ebp
rol edx, 0x14
shr eax, 0x17
xor esi, esp
mov edx, edx
dec eax
mov edx, eax
and esi, edi
mov esi, eax
xor ecx, esi
mov esi, esi
and eax, eax
shr eax, 0x19
and esi, edi
push 0
or dword [0x59a62e], edi
mov dword [0x59a491], 0x1202cc74
xor edi, dword [0x591b3e]
not esi
xor ecx, dword [0x595f5e]
inc esi
rol edi, 0x13
not esi
xor esi, 0x167651e
xor edi, dword [0x5980d1]
xor edx, eax
xor dword [0x59a7f0], 0x814be
xor edx, 0x570fb89
mov dword [0x59a1ea], edi
mov dword [0x59a3c4], ebx
mov dword [0x59a69e], 0xd1e87b0
mov dword [0x59a7fc], ecx
mov ebx, 0x5e5
add eax, 0xaeb0aaa
xor ecx, eax
sub esi, eax
or dword [0x59a774], esi
xchg edi, esi
xor eax, 0x197c620
not eax
xor eax, 0x2604440
xor ecx, dword [0x59ac3c]
mov dword [0x59a443], edi
sub esi, dword [0x59aace]
xchg edx, edx
xor eax, esp
add ebx, eax
sub ebx, eax
xor eax, esp
xchg edx, edx
xor eax, 0x2604440
not eax
xor eax, 0x197c620
xchg edi, esi
add esi, eax
xor ecx, eax
sub eax, 0xaeb0aaa
push ebx
call fcn.00403b44
xor edi, dword [0x59adbc]
dec ebx
call fcn.0040151e
sub ebx, dword [0x59af62]
sub esi, dword [0x59af13]
sub edi, dword [0x59ac5f]
sub dword [0x59a68c], 0x6908780
xchg ecx, eax
or dword [0x59a68a], 0x1f5b74fe
xchg eax, eax
ror edx, 4
add esi, eax
call fcn.00405529
xchg esi, eax
xor ecx, dword [0x59aa00]
add eax, esp
dec eax
xor esi, eax
inc eax
not edi
not edi
dec eax
xor esi, eax
inc eax
sub eax, esp
xchg esi, eax
sub esi, eax
rol edx, 4
xchg eax, eax
mov dword [0x59a7f8], 0x31bb763f
xchg ecx, eax
call fcn.00406c2e
inc ebx
call fcn.00405db9
push 0x40000
dec ebx
ror eax, 6
sub ebx, dword [0x59afc0]
inc esi
not eax
xchg edi, eax
call fcn.00404166
inc esi
ror eax, 1
inc esi
dec esi
rol eax, 1
dec esi
xchg edi, eax
not eax
dec esi
rol eax, 6
inc ebx
call dword [sym.imp.KERNEL32.dll_HeapCreate]
add esi, dword [0x59ad80]
add esi, eax
call fcn.0040281f
xor edi, eax
neg edx
xor ecx, dword [0x59aa30]
not eax
call fcn.00404b4b
not eax
rol eax, 0x13
mov dword [0x59a797], 0x1918312c
mov dword [0x59a5de], 0x1b78aa88
sub esi, 0xfefca60
sub edx, dword [0x59ad50]
xor ebx, eax
mov dword [0x59a275], 0x6c2ded3
mov dword [0x59a718], 0x90ef9cc
call fcn.00405529
add dword [0x59a706], 0x7615f4
and dword [0x59a33a], 0x20f84f8a
xor ebx, eax
add esi, 0xfefca60
ror eax, 0x13
not eax
call fcn.00401661
not eax
neg edx
xor edi, eax
sub esi, eax
push ebx
ror edx, 0x18
add edi, ecx
rol esi, 0x1e
xchg eax, eax
neg esi
xor eax, esi
add edi, dword [0x59aa9a]
mov dword [0x59a836], edi
sub esi, esp
not eax
xor edx, dword [0x59ab64]
not eax
add esi, esp
or dword [0x59a5b1], edi
xor eax, esi