Function at 0x405250
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x20
mov eax, dword [0x418018]
xor eax, esp
mov dword [esp + 0x1c], eax
push esi
mov esi, ecx
test esi, esi
je 0x405436
cmp dword [esi + 0x10], 0
je 0x405287
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov edx, dword [ecx + 0x28]
push 0
push 0
push eax
add edx, eax
call edx
mov dword [esi + 0x10], 0
cmp dword [esi + 8], 0
push edi
je 0x405358
xor edi, edi
cmp dword [esi + 0xc], edi
jle 0x4052b8
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, dword [esi + 8]
cmp dword [eax + edi*4], 0xffffffff
lea eax, [eax + edi*4]
je 0x4052b1
mov ecx, dword [eax]
push ecx
call ebx
inc edi
cmp edi, dword [esi + 0xc]
jl 0x4052a0
pop ebx
mov eax, dword [0x413228]
mov edx, dword [str.cNJ_mYNN]
mov cl, byte [0x41322c]
mov dword [esp + 0xc], eax
mov eax, dword [0x41a1f8]
mov dword [esp + 8], edx
mov byte [esp + 0x10], cl
test eax, eax
jne 0x40534a
mov edi, dword [0x41a1d8]
test edi, edi
jne 0x4052f5
call fcn.004010f0
mov edi, eax
mov dword [0x41a1d8], edi
mov dl, byte [esp + 8]
lea ecx, [esp + 8]
test dl, dl
je 0x40530e
xor dl, 0x2b
mov byte [ecx], dl
mov dl, byte [ecx + 1]
inc ecx
test dl, dl
jne 0x405301
mov eax, dword [0x41a1ec]
test eax, eax
jne 0x40533d
test edi, edi
jne 0x405325
call fcn.004010f0
mov dword [0x41a1d8], eax
push str.lN_YDHjOOYNXX
call section..text
mov edi, dword [0x41a1d8]
add esp, 4
mov dword [0x41a1ec], eax
lea edx, [esp + 8]
push edx
push edi
call eax
mov dword [0x41a1f8], eax
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x18]
push ecx
mov ecx, dword [esi + 0x14]
push edx
push ecx
call eax
cmp dword [esi + 4], 0
je 0x405398
mov eax, dword [0x41a1e0]
test eax, eax
jne 0x40538b
cmp dword [0x41a1d8], eax
jne 0x405379
call fcn.004010f0
mov dword [0x41a1d8], eax
push str.BY_JGmYNN
call section..text
add esp, 4
mov dword [0x41a1e0], eax
mov edx, dword [esi + 4]
push 0x8000
push 0
push edx
call eax
mov eax, dword [str.cNJ_mYNN]
mov ecx, dword [0x413228]
mov dl, byte [0x41322c]
mov dword [esp + 0x18], eax
mov eax, dword [0x41a1f8]
mov dword [esp + 0x1c], ecx
mov byte [esp + 0x20], dl
test eax, eax
jne 0x40542a
mov edi, dword [0x41a1d8]
test edi, edi
jne 0x4053d5
call fcn.004010f0
mov edi, eax
mov dword [0x41a1d8], edi
mov dl, byte [esp + 0x18]
lea ecx, [esp + 0x18]
test dl, dl
je 0x4053ee
xor dl, 0x2b
mov byte [ecx], dl
mov dl, byte [ecx + 1]
inc ecx
test dl, dl
jne 0x4053e1
mov eax, dword [0x41a1ec]
test eax, eax
jne 0x40541d
test edi, edi
jne 0x405405
call fcn.004010f0
mov dword [0x41a1d8], eax
push str.lN_YDHjOOYNXX
call section..text
mov edi, dword [0x41a1d8]
add esp, 4
mov dword [0x41a1ec], eax
lea ecx, [esp + 0x18]
push ecx
push edi
call eax
mov dword [0x41a1f8], eax
mov edx, dword [esi + 0x18]
mov ecx, dword [esi + 0x14]
push esi
push edx
push ecx
call eax
pop edi
mov eax, dword [0x4132ac]
mov edx, dword [str.xN_gJX_nYYDY]
mov ecx, dword [0x4132b0]
mov dword [esp + 8], eax
mov eax, dword [0x41a21c]
mov dword [esp + 4], edx
mov dl, byte [0x4132b4]
mov dword [esp + 0xc], ecx
mov byte [esp + 0x10], dl
test eax, eax
jne 0x4054d9
mov esi, dword [0x41a1d8]
test esi, esi
jne 0x40547d
call fcn.004010f0
mov esi, eax
mov dword [0x41a1d8], esi
mov dl, byte [esp + 4]
lea ecx, [esp + 4]
test dl, dl
je 0x40549d
lea esp, [esp]
xor dl, 0x2b
mov byte [ecx], dl
mov dl, byte [ecx + 1]
inc ecx
test dl, dl
jne 0x405490
mov eax, dword [0x41a1ec]
test eax, eax
jne 0x4054cc
test esi, esi
jne 0x4054b4
call fcn.004010f0
mov dword [0x41a1d8], eax
push str.lN_YDHjOOYNXX
call section..text
mov esi, dword [0x41a1d8]
add esp, 4
mov dword [0x41a1ec], eax
lea ecx, [esp + 4]
push ecx
push esi
call eax
mov dword [0x41a21c], eax
push 0
call eax
mov ecx, dword [esp + 0x20]
pop esi
xor ecx, esp
call fcn.00410f02
add esp, 0x20
ret