Function at 0x43c360
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x128
mov eax, dword [0x51e080]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
mov ebx, ecx
push esi
mov esi, dword [ebp + 8]
push edi
mov eax, dword [ebx + 0x1e8]
mov dword [ebp - 0x11c], ebx
mov dword [ebp - 0x100], esi
movzx eax, word [eax + 0x264]
push eax
call dword [sym.imp.WS2_32.dll_htons]
mov edi, dword [ebx + 0x20]
movzx eax, ax
mov dword [ebp - 0x114], eax
mov dword [ebp - 0x118], edi
mov dword [edi], 0xb29146f6
mov eax, dword [esi]
mov dword [edi + 0x20], eax
mov ecx, dword [ebx + 0x1e8]
cmp dword [ecx + 0x418], 0
jne 0x43c51c
movsd xmm0, qword [ecx + 0x348]
movsd qword [edi + 0x28], xmm0
mov ecx, dword [ebx + 0x1e8]
mov eax, dword [ecx + 0x368]
mov dword [edi + 0x30], eax
mov eax, dword [ecx + 0x36c]
mov dword [edi + 0x34], eax
mov eax, dword [ecx + 0x370]
mov dword [edi + 0x38], eax
mov eax, dword [ecx + 0x374]
mov dword [edi + 0x3c], eax
mov eax, dword [ecx + 0x378]
mov dword [edi + 0x40], eax
mov eax, dword [ecx + 0x37c]
mov dword [edi + 0x44], eax
mov eax, dword [ecx + 0x380]
mov dword [edi + 0x48], eax
mov eax, dword [ecx + 0x384]
xor ecx, ecx
mov dword [edi + 0x4c], eax
mov eax, dword [ebx + 0x1e8]
mov edx, dword [eax + 0x410]
test edx, edx
cmove ecx, dword [ebp - 0x114]
xor eax, eax
test edx, edx
sete al
mov dword [edi + 0x50], eax
lea eax, [edi + 0x54]
mov dword [edi + 4], ecx
mov ecx, dword [ebx + 0x1e8]
push eax
mov ecx, dword [ecx + 0x4c8]
call fcn.0047acd0
mov eax, dword [ebx + 0x14]
lea ecx, [edi + 8]
mov esi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [ebp - 0x108], ecx
mov dword [ebp - 0x110], esi
mov eax, dword [eax + 0x40]
movups xmm0, xmmword [eax + 0xc]
movups xmmword [ecx], xmm0
movq xmm0, qword [eax + 0x1c]
movq qword [ecx + 0x10], xmm0
mov dword [edi + 0x58], 4
mov eax, dword [ebx + 0x1e8]
mov ecx, dword [eax + 0x4d8]
lea eax, [edi + 0x60]
test eax, eax
mov dword [ebp - 0x104], ecx
mov eax, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [ebp - 0x10c], eax
je 0x43c5c2
add ecx, 0x48
push ecx
call eax
mov edx, dword [ebp - 0x104]
mov ecx, dword [edx + 0x60]
mov eax, dword [edx + 0x64]
mov dword [ebp - 0x104], eax
mov eax, ecx
cmp ecx, dword [ebp - 0x104]
mov dword [ebp - 0xfc], ecx
cmovbe eax, dword [ebp - 0x104]
inc eax
cmp eax, 0x20
jbe 0x43c57f
mov eax, 0x20
mov ecx, eax
sub ecx, eax
or eax, 0xffffffff
shr eax, cl
and eax, dword [edx + 0x68]
mov dword [edi + 0x60], eax
lea eax, [edx + 0x48]
push eax
call esi
mov ecx, dword [ebp - 0xfc]
mov edx, dword [ebp - 0x104]
jmp 0x43c5ce
movsd xmm0, qword [ecx + 0x350]
ucomisd xmm0, qword [0x513a20]
lahf
test ah, 0x44
jp 0x43c3d3
movsd xmm0, qword [ecx + 0x348]
lea eax, [ebp - 0x18]
sub esp, 8
movsd qword [edi + 0x28], xmm0
movsd qword [esp], xmm0
push str._2.2f
push 0xffffffffffffffff
push 8
push eax
call fcn.00415570
mov ecx, dword [ebx + 0x1e8]
lea eax, [ebp - 0x18]
add esp, 0x18
mov ecx, dword [ecx + 0x478]
push eax
push 0xbcd3f497
call fcn.0045bc70
jmp 0x43c3d8
test eax, eax
je 0x43c5a9
mov ecx, 0x20
sub ecx, eax
or eax, 0xffffffff
shr eax, cl
and eax, dword [edx + 0x68]
mov dword [edi + 0x60], eax
lea eax, [edx + 0x48]
push eax
call esi
mov ecx, dword [ebp - 0xfc]
mov edx, dword [ebp - 0x104]
jmp 0x43c5ce
xor eax, eax
mov dword [edi + 0x60], eax
lea eax, [edx + 0x48]
push eax
call esi
mov ecx, dword [ebp - 0xfc]
mov edx, dword [ebp - 0x104]
jmp 0x43c5ce
mov edx, dword [ebp - 0x124]
mov ecx, dword [ebp - 0x128]
mov dword [edi + 0x64], 0x40
lea esi, [edi + 0x64]
mov eax, edx
shl eax, 8
or eax, ecx
mov dword [edi + 0x5c], eax
mov eax, dword [ebx + 0x1e8]
movsd xmm0, qword [eax + 0x350]
movsd qword [edi + 0x68], xmm0
mov eax, dword [ebx + 0x1e8]
movups xmm0, xmmword [eax + 0x388]
movups xmmword [edi + 0x70], xmm0
movups xmm0, xmmword [eax + 0x398]
movups xmmword [edi + 0x80], xmm0
movq xmm0, qword [eax + 0x3a8]
mov eax, dword [edi + 0x60]
movq qword [edi + 0x90], xmm0
mov dword [ebx + 0x19c], eax
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x1a0], ecx
add eax, 0x130
mov ecx, dword [ebx + 0x1e8]
push eax
mov dword [ebx + 0x1a4], edx
push esi
mov ecx, dword [ecx + 0x4d8]
call fcn.00426430
xorps xmm0, xmm0
lea eax, [edi + 0xd0]
movups xmmword [edi + 0x98], xmm0
push 0x54
movups xmmword [edi + 0xa8], xmm0
push 0
movups xmmword [edi + 0xb8], xmm0
push eax
movq qword [edi + 0xc8], xmm0
call fcn.004d6ed0
mov eax, dword [ebx + 0x1e8]
add esp, 0xc
mov eax, dword [eax + 0x28c]
and eax, 0xffff0000
mov dword [edi + 0x128], 0xfa0
mov dword [edi + 0x124], eax
mov ecx, dword [ebx + 0x1c]
call fcn.00409ee0
mov ecx, dword [esi]
and eax, 0x1f
push ecx
push 0x5dc
push 6
lea eax, [eax + ecx*2]
mov ecx, dword [ebx + 0x18]
add eax, 0x130
push eax
push dword [ebx + 0x20]
mov dword [ebp - 0x104], eax
call fcn.004684f0
test eax, eax
jne 0x43cf02
mov esi, dword [ebx + 0x18]
cmp dword [esi + 0x30], eax
jne 0x43c730
lea eax, [esi + 0x10]
mov dword [ebp - 0xfc], eax
push eax
call dword [ebp - 0x10c]
cmp dword [esi + 0x48], 0
jne 0x43c703
cmp dword [esi + 0x68], 0
je 0x43c720
lea eax, [esi + 0x10]
push eax
call dword [ebp - 0x110]
push 5
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [esi + 0x30], 0
jne 0x43c730
lea eax, [esi + 0x10]
jmp 0x43c6f0
mov eax, dword [ebp - 0xfc]
push eax
call dword [ebp - 0x110]
nop dword [eax]
push ecx
mov ecx, dword [ebx + 0x18]
lea eax, [ebp - 0x104]
push eax
push dword [ebx + 0x20]
call fcn.00468d30
test eax, eax
jne 0x43cf02
cmp dword [edi], 0xb29146f6
jne 0x43c730
cmp dword [edi + 0x50], 1
jne 0x43c7e3
mov eax, dword [ebx + 0x14]
mov ecx, dword [eax + 0x40]
mov eax, dword [edi + 4]
mov dword [ecx + 0x20], eax
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + 0x40]
mov dword [eax + 4], 1
mov eax, dword [ebx + 0x14]
mov ecx, dword [eax + 0x40]
add ecx, 0xc
mov dword [ebp - 0x104], ecx
je 0x43c7e3
mov eax, dword [ebx + 0x1e8]
push ecx
mov esi, dword [eax + 0x4b0]
mov ecx, esi
mov dword [ebp - 0xfc], esi
call fcn.0049e790
test eax, eax
jne 0x43c7e3
add esi, 0x30
push esi
call dword [ebp - 0x10c]
mov eax, dword [ebp - 0xfc]
mov ecx, dword [ebp - 0x104]
push esi
mov dword [eax + 0xbc], 1
movups xmm0, xmmword [ecx]
movups xmmword [eax + 0xc0], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [eax + 0xd0], xmm0
call dword [ebp - 0x110]
mov ecx, dword [ebx + 0x1e8]
push dword [edi + 0x54]
mov ecx, dword [ecx + 0x4c8]
call fcn.0047aa00
mov eax, dword [ebx + 0x1e8]
mov esi, dword [eax + 0x4c8]
lea eax, [ebp - 0x104]
push eax
mov ecx, esi
call fcn.0047ac20
test eax, eax
je 0x43c823
lea eax, [ebp - 0x104]
mov ecx, esi
push eax
call fcn.0047acd0
mov eax, dword [ebp - 0x114]
mov dword [edi + 0x1c], eax
mov eax, dword [ebx + 0x1e8]
mov eax, dword [eax + 0x4b0]
mov esi, dword [eax + 0x118]
lea eax, [edi + 8]
mov dword [ebp - 0xfc], esi
test eax, eax
je 0x43c943
mov ecx, dword [esi + 8]
push eax
call fcn.0049e790
test eax, eax
jne 0x43c943
mov edx, dword [ebp - 0x108]
or ecx, 0xffffffff
mov eax, dword [esi + 4]
mov edi, 4
movups xmm0, xmmword [edx]
mov esi, dword [eax + 0x480]
movups xmmword [ebp - 0xf4], xmm0
movq xmm0, qword [edx + 0x10]
add edx, 2
movq qword [ebp - 0xe4], xmm0
movzx eax, byte [edx - 2]
lea edx, [edx + 6]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4]
movzx eax, byte [edx - 7]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4]
movzx eax, byte [edx - 6]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4]
movzx eax, byte [edx - 5]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4]
movzx eax, byte [edx - 4]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4]
movzx eax, byte [edx - 3]
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [esi + eax*4]
sub edi, 1
jne 0x43c891
mov esi, dword [ebp - 0xfc]
xor ecx, 0x81e6b3f
mov dword [ebp - 0xf8], ecx
lea ebx, [esi + 0xc]
push ebx
call dword [ebp - 0x10c]
mov esi, dword [esi + 0x24]
lea edi, [esi + 8]
push edi
call dword [ebp - 0x10c]
lea eax, [ebp - 0xf8]
push eax
push ecx
mov ecx, esi
call fcn.00405d20
mov esi, dword [ebp - 0x110]
push edi
call esi
push ebx
call esi
mov ebx, dword [ebp - 0x11c]
mov edi, dword [ebp - 0x118]
cmp dword [edi + 0x20], 0
mov eax, dword [ebp - 0x100]
je 0x43c955
mov dword [eax], 2
movsd xmm0, qword [0x513b60]
comisd xmm0, xmmword [edi + 0x28]
jbe 0x43c96f
cmp dword [eax], 0
jne 0x43c96f
mov dword [eax], 1
movsd xmm0, qword [edi + 0x28]
movsd qword [ebx + 0x1e0], xmm0
mov ecx, dword [edi + 0x58]
cmp ecx, 4
je 0x43c98d
cmp ecx, 5
jne 0x43ce89
cmp dword [edi + 0x64], 0x40
ja 0x43ce89
mov esi, dword [ebx + 0x1e8]
xor eax, eax
cmp ecx, 3
mov dword [ebp - 0x114], esi
lea ecx, [ebx + 0x190]
setne al
mov dword [ebp - 0x108], ecx
lea eax, [eax*8 + 0x128]
add eax, dword [ebx + 0x20]
mov dword [ebp - 0x120], eax
mov eax, dword [esi + 0x4d8]
mov edx, dword [eax + 0xcc]
lea eax, [ebx + 0x194]
mov dword [ebp - 0xfc], eax
test ecx, ecx
je 0x43ca45
test eax, eax
je 0x43ca45
mov eax, dword [edx + 0x94]
mov esi, 1
mov edx, dword [edx + 0x98]
cmp esi, eax
mov ebx, dword [edi + 0x5c]
lea ecx, [eax - 1]
sbb eax, eax
and eax, ecx
shr ebx, 8
mov ecx, dword [edi + 0x5c]
inc edx
movzx ecx, cl
movzx esi, bl
cmp ecx, eax
jae 0x43ca19
mov ecx, eax
jmp 0x43ca1e
cmp ecx, edx
cmova ecx, edx
cmp esi, eax
jb 0x43ca29
cmp esi, edx
mov eax, esi
cmova eax, edx
mov edx, dword [ebp - 0x108]
mov ebx, dword [ebp - 0x11c]
mov esi, dword [ebp - 0x114]
mov dword [edx], ecx
mov ecx, dword [ebp - 0xfc]
mov dword [ecx], eax
mov eax, dword [ebx + 0x194]
shl eax, 8
or eax, dword [ebx + 0x190]
mov dword [ebx + 0x198], eax
mov eax, dword [edi + 0x60]
mov dword [ebx + 0x18c], eax
mov eax, dword [edi + 0x64]
mov dword [ebx + 0x188], eax
lea eax, [edi + 0x30]
push eax
mov dword [ebp - 0x108], eax
mov eax, dword [ebx + 0xc]
add eax, 0x10
push eax
call fcn.004abe70
test eax, eax
je 0x43ce48
lea eax, [esi + 0x330]
push eax
call dword [ebp - 0x10c]
mov esi, dword [ebx + 0x1e8]
movsd xmm1, qword [edi + 0x68]
movsd xmm0, qword [esi + 0x348]
comisd xmm1, xmm0
ja 0x43cae7
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jp 0x43ce2e
lea eax, [esi + 0x368]
push eax
mov eax, dword [ebx + 0xc]
add eax, 0x10
push eax
call fcn.004abe70
test eax, eax
je 0x43cae7
ucomisd xmm0, qword [esi + 0x350]
lahf
test ah, 0x44
jnp 0x43ce2e
mov eax, dword [ebx + 0x10]
mov ecx, dword [eax + 0xbc]
lea eax, [edi + 0x30]
mov dword [ebp - 0xfc], ecx
test eax, eax
je 0x43cb55
lea edi, [ecx + 4]
push edi
call dword [ebp - 0x10c]
mov ecx, dword [ebp - 0xfc]
lea eax, [ebp - 0xdc]
push eax
push dword [ebp - 0x108]
call fcn.0042ceb0
push edi
mov esi, eax
call dword [ebp - 0x110]
mov eax, dword [ebx + 0x1e8]
mov dword [ebp - 0x108], eax
test esi, esi
jne 0x43cb49
cmp dword [eax + 0x254], 1
mov esi, eax
jne 0x43ce2e
jmp 0x43cb4f
mov esi, dword [ebp - 0x108]
mov edi, dword [ebp - 0x118]
lea eax, [ebp - 0x84]
push eax
call fcn.004b1240
mov eax, dword [esi + 0x480]
mov dword [ebp - 0xfc], eax
lea eax, [edi + 0x68]
mov dword [ebp - 0x108], eax
test eax, eax
je 0x43cbf8
mov eax, dword [ebp - 0x70]
add eax, 8
mov dword [ebp - 0x70], eax
cmp eax, 8
jae 0x43cb8b
inc dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x24]
mov ebx, 8
mov edi, dword [ebp - 0x108]
nop dword [eax]
mov eax, 0x40
mov esi, ebx
sub eax, ecx
cmp ebx, eax
cmovae esi, eax
lea eax, [ebp - 0x64]
push esi
add eax, ecx
push edi
push eax
call fcn.004d6950
mov ecx, dword [ebp - 0x24]
add esp, 0xc
add ecx, esi
add edi, esi
sub ebx, esi
mov dword [ebp - 0x24], ecx
cmp ecx, 0x40
jne 0x43cbe6
mov ecx, dword [ebp - 0xfc]
lea eax, [ebp - 0x84]
push eax
call fcn.004b2a40
xor ecx, ecx
mov dword [ebp - 0x24], ecx
test ebx, ebx
jne 0x43cba0
mov ebx, dword [ebp - 0x11c]
mov edi, dword [ebp - 0x118]
jmp 0x43cbfb
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebx + 0x1e8]
mov eax, dword [eax + 0x480]
mov dword [ebp - 0xfc], eax
lea eax, [edi + 0x30]
mov dword [ebp - 0x108], eax
test eax, eax
je 0x43cc8c
mov eax, dword [ebp - 0x70]
add eax, 0x20
mov dword [ebp - 0x70], eax
cmp eax, 0x20
jae 0x43cc2b
inc dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x108]
mov edi, 0x20
mov eax, 0x40
mov esi, edi
sub eax, ecx
cmp edi, eax
cmovae esi, eax
lea eax, [ebp - 0x64]
push esi
add eax, ecx
push ebx
push eax
call fcn.004d6950
mov ecx, dword [ebp - 0x24]
add esp, 0xc
add ecx, esi
add ebx, esi
sub edi, esi
mov dword [ebp - 0x24], ecx
cmp ecx, 0x40
jne 0x43cc7c
mov ecx, dword [ebp - 0xfc]
lea eax, [ebp - 0x84]
push eax
call fcn.004b2a40
xor ecx, ecx
mov dword [ebp - 0x24], ecx
test edi, edi
jne 0x43cc36
mov ebx, dword [ebp - 0x11c]
mov edi, dword [ebp - 0x118]
mov ecx, dword [ebx + 0x1e8]
lea eax, [ebp - 0x84]
push eax
mov ecx, dword [ecx + 0x480]
call fcn.004b2720
push 0x2c6
lea eax, [ebp - 0x114]
push eax
call fcn.004bd020
mov eax, dword [ebx + 0x1e8]
mov esi, dword [ebp - 0x114]
push 0x28
mov eax, dword [eax + 0x4ec]
push dword [eax + 0x24]
push 0x2c6
push esi
call fcn.004bba30
test eax, eax
je 0x43cce6
push esi
call fcn.004bd080
jmp 0x43ce2e
push 0x28
lea eax, [edi + 0x70]
push eax
push ecx
lea eax, [ebp - 0x84]
push eax
push esi
call fcn.004bbeb0
push dword [ebp - 0x114]
mov esi, eax
call fcn.004bd080
test esi, esi
je 0x43cd2e
mov esi, dword [ebp - 0x100]
mov dword [esi], 1
mov eax, dword [ebx + 0x1e8]
add eax, 0x330
push eax
call dword [ebp - 0x110]
jmp 0x43ce4e
mov eax, dword [ebx + 0x1e8]
mov dword [eax + 0x254], 0
lea eax, [ebp - 0xc8]
push eax
lea eax, [edi + 0x30]
push eax
call fcn.004ae8f0
mov eax, dword [ebp - 0x104]
mov dword [ebp - 0x90], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0xcc], 1
mov dword [ebp - 0xa8], 6
mov dword [ebp - 0xa4], 0
mov esi, dword [eax + 0xbc]
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 0
lea edi, [esi + 4]
mov dword [ebp - 0x94], 0
push edi
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0
call dword [ebp - 0x10c]
lea eax, [ebp - 0xdc]
mov ecx, esi
push eax
call fcn.00429810
push edi
call dword [ebp - 0x110]
mov ecx, dword [ebp - 0x118]
mov eax, dword [ebx + 0x1e8]
movsd xmm0, qword [ecx + 0x68]
comisd xmm0, xmmword [eax + 0x3b0]
jbe 0x43ce2e
movsd qword [eax + 0x3b0], xmm0
mov eax, dword [ebx + 0x1e8]
movups xmm0, xmmword [ecx + 0x70]
movups xmmword [eax + 0x3b8], xmm0
movups xmm0, xmmword [ecx + 0x80]
movups xmmword [eax + 0x3c8], xmm0
movq xmm0, qword [ecx + 0x90]
movq qword [eax + 0x3d8], xmm0
mov esi, dword [ebp - 0x100]
mov eax, dword [ebx + 0x1e8]
add eax, 0x330
push eax
call dword [ebp - 0x110]
jmp 0x43ce4e
mov esi, dword [ebp - 0x100]
mov eax, dword [ebx + 0x188]
add eax, eax
push eax
push dword [ebp - 0x120]
push dword [ebx + 0x184]
call fcn.004d6950
mov ecx, dword [ebx + 0x188]
add esp, 0xc
mov eax, dword [ebx + 0x184]
test ecx, ecx
jne 0x43ce80
mov word [eax], cx
jmp 0x43ce8f
xor edx, edx
mov word [eax + ecx*2 - 2], dx
jmp 0x43ce8f
mov esi, dword [ebp - 0x100]
cmp dword [esi], 0
jne 0x43ce9b
mov ecx, ebx
call fcn.00438780
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + 0x40]
cmp dword [eax], 1
jne 0x43cecf
mov ecx, dword [ebx + 0x1e8]
add eax, 0xc
push eax
push 0
mov ecx, dword [ecx + 0x4b0]
call fcn.0049efe0
mov eax, dword [ebx + 0x1e8]
mov eax, dword [eax + 0x4b0]
inc dword [eax + 0x11c]
mov eax, dword [ebx + 0x14]
xorps xmm0, xmm0
mov eax, dword [eax + 0x40]
movups xmmword [eax + 0xc], xmm0
movq qword [eax + 0x1c], xmm0
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + 0x40]
mov dword [eax], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.004d3878
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp - 8]
mov eax, 1
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004d3878
mov esp, ebp
pop ebp
ret 4